iOS 应用内购买。如何查看购买是不是已经购买?

Posted

技术标签:

【中文标题】iOS 应用内购买。如何查看购买是不是已经购买?【英文标题】:iOS in app purchase. How to check if purchase already bought?iOS 应用内购买。如何查看购买是否已经购买? 【发布时间】:2015-02-08 14:32:43 【问题描述】:

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

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

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

    

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

【问题讨论】:

您需要提供一个恢复按钮。并执行 IAP 恢复购买的产品,如下所示:developer.apple.com/library/ios/documentation/… A complete solution to LOCALLY validate an in-app receipts and bundle receipts on iOS 7的可能重复 【参考方案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 的批准,但生产代码需要获得批准。

【讨论】:

以上是关于iOS 应用内购买。如何查看购买是不是已经购买?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 应用内购买 - 恢复按钮?

IOS应用内购买验证或数据检索

iOS - 我们如何通过促销代码为应用内购买提供折扣?

检查用户是不是真的为应用内购买付费 [iOS, Swift]

如何为非消耗品设置应用内购买

如何确认应用内购买是不是真的对测试 iTunes Connect 用户有效?