如何检查用户是否已经购买了应用程序?

How to check does user already bought app?

我有用于进行或恢复购买的工作代码。我可以购买和恢复。

我的想法是在购买屏幕上放置两个按钮:"Buy" 和 "Restore"。

我想 eneble/disable 这些按钮取决于购买状态。

简单:

  1. 如果用户还没有购买 -> "Buy" 启用和 "Restore" 禁用

  2. 如果用户已经购买 -> 没有购买屏幕:)

  3. 如果用户已购买并重新安装应用程序 - "Buy" 禁用并 "Restore" 启用

当然,我使用的是 standardUserDefaults,但当用户重新安装应用程序时,问题就开始了。我的问题是如何从应用商店获取购买状态(已购买或尚未购买)?

您不应该这样做,因为 Apple 要求始终有一个恢复按钮,否则您的应用将被拒绝。

您也不应根据购买或恢复的情况禁用或隐藏按钮。 如果用户在他已经购买的产品上按下购买按钮,他将再次免费获得该产品,您永远不会被收取两次费用。

所以我什至懒得尝试这样做。它还适当地使您的用户体验更加混乱。最好有一个不会一直改变的一致的商店体验。此外,用户可能会认为您的游戏中存在错误,因为他们看到的只是一个不起作用的按钮。

如果您想向用户表明他已经购买了该商品,可以在购买按钮旁边打个勾或其他东西。购买产品后,您必须设置某种 bool 或其他 属性 并保存在 NSUserDefaults 中。只需使用 属性 添加或删除 tick/indicator.

如果您想知道如何处理第一次按下恢复按钮,您应该使用恢复完成委托方法。在那里你基本上可以显示 2 个 UIAlertControllers。 1 如果没有恢复,因为之前没有购买任何东西,1 表示恢复成功。检查我最近回答的这个问题以获取示例代码。

"We found that your app offers In-App Purchase/s that can be restored but it does not include a "Restore”功能允许用户恢复之前购买的应用内购买 Purchase/s。要恢复之前购买的应用内购买产品,提供 "Restore" 按钮并在点击 "Restore" 按钮时启动恢复过程