从 iOS 上没有 IAP 的版本升级后,为用户帐户保留 IAP

Keeping an IAP for a users account after an upgrade from a version that had no IAPs on iOS

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

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

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

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

澄清一下,如果用户使用的是当前版本 2.2 并且他们升级,他们将解锁 IAP 的所有功能并且现在使用专业版(基于 NSUserDefaults),但如果他们卸载应用程序并重新安装它,然后单击恢复,因为他们的帐户上没有 "receipt",所以他们无法恢复任何东西,就像他们是新用户并且创建了 IAP 一样。我该如何解决这个问题?

我想我需要在更新完成时调用购买,但 "charge" 用户不需要。

在更新中,我有一个显示 UIButton 的小图像,它只是向更新用户指示新功能是什么。当用户单击该图像中的 UIButton 时,它会将 IAPSuccessfulNSUserDefaults 设置为 YES,以便它们立即进入 Pro 版本。但是,它并没有为用户的 iTunes 帐户设置活动 purchase/receipt。

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

应用内购买系统目前不支持此功能。您最接近的做法是将您的应用内购买产品设置为 "Free" 价格等级,然后在后台为他们购买,如您所述。

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