iOS应用内购买。如何检查已购买的购买项目?

3

我想在我的应用程序中添加购买功能。但我不知道如何检查是否已经购买。据我所知,当有人购买时,我需要将其存储到UserDefaults或KeyChain中,然后检查它是否已经存在(这意味着已经购买了此购买)。但是如果用户从另一个设备购买了此购买,该怎么办?

我有一段代码可以提供关于iTunes中所有购买的信息。

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

    }

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


3
您需要提供一个“恢复”按钮,并按照此链接中的方式执行购买项目的恢复操作:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html - user523234
1个回答

1
假设您使用的是iOS 7+,您应该验证收据,就像完整的iOS 7上本地验证应用内购买和捆绑购买方案一样,以确定已购买的内容、有效的内容(对于订阅或消耗品),并且如其他评论所述,提供“恢复购买”UI元素,允许用户将可共享的购买项目清晰地传播到新恢复/获取的设备。
至于响应对象,那是目录(可购买物品)信息,而不是已购买物品的信息。为了使IAP正常工作,资产需要经过类似于应用本身的苹果批准,并处于您在iTunes Connect中“准备销售”的控制下。对于此步骤,您向Apple发送要提供的完整列表,然后Apple将返回将其分成“如果您的用户尝试购买此项,他们将成功”(产品)和“如果您的用户尝试购买此项,他们将失败”(无效的产品标识符)的列表。
当您使用沙盒/iTunes Connect测试用户进行测试时,您的产品不需要获得苹果的批准,但对于生产代码,它们需要获得批准。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接