2015-02-08 151 views
2

我正试图添加购买到我的应用程序。但我不知道如何检查购买是否已经购买。据我了解,当有人购买时,我需要将其存储到UserDefaults或KeyChain中,然后检查它是否已经存在(这意味着此购买已被购买)。但是,当用户购买这个购买设备的时候,另一个设备呢?iOS应用购买。如何检查购买是否已经购买?

我有代码给我关于iTunes中所有购买的信息。

func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) { 

    } 

响应对象有两个变量:“products”和“invalidProductIdentifiers”。但据我所知,产品包含来自iTunes的所有产品,而invalidProductIdentifiers包含我要求检查的所有标识符,但Apple无法识别它们。所以,我可以检查购买是否已经购买。

+3

你需要的是提供一个恢复按钮。然后执行IAP恢复购买的产品,如下所示:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html – user523234 2015-02-08 14:48:12

+0

[完整的解决方案以完成本地验证应用内收据和iOS 7收据捆绑](http://stackoverflow.com/questions/19943183/a-complete-solution-to-locally-validate-an-in-app-receipts-and-bundle-receipts- O) – CAMOBAP 2016-08-15 13:59:51

回答

1

假设iOS 7+,你应该验证收据,ala A complete solution to LOCALLY validate an in-app receipts and bundle receipts on iOS 7以确定购买的东西,什么是有效的(在订阅或消费品的情况下),如其他评论所述,提供“恢复购买”UI元素,它允许用户清晰地将可共享购买传播到新近恢复/获取的设备。

AFA响应对象,即目录(可购买物品)信息,而不是已购买的信息。为了使IAP正常工作,资产将被Apple认可,类似于应用程序本身,以及在iTunes Connect中处于您自己的“准备出售”控制之下。为此,您向苹果发送您想要提供的完整时间列表,然后Apple向您返回列表,分为“如果您的用户试图购买此类产品,他们会成功”(产品)以及“如果您的用户尝试买这个,他们会失败“(invalidProductIdentifiers)。

当您使用沙盒/ iTunes Connect测试用户进行测试时,您的产品不需要Apple批准,但是需要生产代码。