iOS应用内购买。如何检查购买是否已购买?

时间:2015-02-08 14:32:44

标签: ios cocoa-touch in-app-purchase storekit

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

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

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

    }

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

1 个答案:

答案 0 :(得分: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发送一份完整的列表,列出您想要提供的时间,Apple将返回给您的列表分为“如果您的用户试图购买,他们将成功”(产品)和“如果您的用户尝试买这个,他们将失败“(invalidProductIdentifiers)。

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