【问题标题】:Keeping an IAP for a users account after an upgrade from a version that had no IAPs on iOS从 iOS 上没有 IAP 的版本升级后为用户帐户保留 IAP
【发布时间】:2015-05-02 05:25:41
【问题描述】:

我在 App Store 中有我的应用程序,目前是付费版本,但我正在免费提供这个应用程序并带来 IAP,它可以解锁他们以前拥有的一些功能。例如,免费用户只能添加 10 个条目,但 IAP 用户可以在我正在开发的这个版本中添加任意数量,但在当前的 App Store 版本中,他们可以添加任意数量。

如果用户从 App Store 中的版本升级到我现在带来的版本,我立即将 NSUserDefault "IAPSuccessful" 设置为 YES,以便用户解锁所有功能(因为他们已经已经购买了)。

但是,如果用户删除应用程序并重新安装它并单击“恢复”按钮,则他们实际上无法恢复任何内容。

我将如何解决这个问题?我想确保用户在升级时拥有所有功能,但我如何将购买分配到他们的帐户,以便他们可以从其他设备恢复或在应用被删除时恢复?

澄清一下,如果用户使用的是当前版本 2.2 并且他们升级了,他们会解锁 IAP 的所有功能并且现在使用 Pro 版本(基于 NSUserDefaults),但如果他们卸载应用程序并重新安装然后点击恢复,他们没有什么可以恢复的,因为他们的帐户上没有“收据”,就像他们是新用户并且他们进行了 IAP 一样。我该如何解决这个问题?

我认为我需要在更新完成时调用购买,但不向用户“收费”。

在更新中,我有一张带有UIButton 的小图片,它只是向更新用户提供了新功能的指示。当用户单击该图像中的UIButton 时,它会将IAPSuccessfulNSUserDefaults 设置为“是”,以便他们立即使用专业版。但是,它不会为用户的 iTunes 帐户设置活动购买/收据。

我刚刚尝试在我的IAPViewController 中调用makePurchase 方法,但没有任何反应。

【问题讨论】:

    标签: ios objective-c iphone in-app-purchase


    【解决方案1】:

    应用内购买系统目前不支持此功能。您可以做到的最接近的方法是将您的应用内购买产品设置为“免费”价格层,并在后台为他们购买,如您所述。

    或者,您可以将IAPSuccessful 标志保存在用户的钥匙串中,这样可以防止在删除应用程序时清除该标志。您也可以为钥匙串启用 iCloud 同步,从而在用户的设备上持久保存它。

    【讨论】:

    • 感谢丹尼尔的回复。第二种方法对我来说似乎很有利,即使应用程序被删除,实现 IAPSuccessful 标志也是有意义的,但是您有关于如何将其实际保存到 iCloud 钥匙串的任何指南吗?
    • 另外,是否不需要进行一些核心收据验证?今天一直在阅读它,它看起来非常复杂。
    • 在第一条评论中,我尝试寻找将 NSUserDefault 保存到 iOS 钥匙串的方法,但我真的找不到任何东西。有很多关于如何使用不同技术的帖子,因为它不安全,但在我的情况下不需要安全。
    • 看看github.com/nicklockwood/FXKeychain。它使使用钥匙串像 NSUserDefaults 一样简单
    • 谢谢丹尼尔。这是完美的,真的很有帮助。感谢您的帮助!
    猜你喜欢
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2018-05-03
    相关资源
    最近更新 更多