iOS应用内购买无后端

gle*_*age 5 backend objective-c in-app-purchase ios

我正在调查应用程序内购买的使用情况,该应用程序本质上是我的应用程序的“专业”版本。该应用程序本身是免费的,但一旦进入,用户就可以选择购买专业内容(只有一件事)。“专业”内容已经存在于应用程序中,无需下载,只需“解锁”即可。

  1. 苹果指南允许这样做吗?
  2. 由于只会购买 1 个非消耗品,我认为不需要使用后端服务器。
    • 指南中是否允许这样做?
    • 将结果存储在 NSUserDefaults 中是否安全和简单,如果安装在另一台设备上,则从购买的 SKPayment 恢复中提取它?

我看过其他几个问题。

这些似乎表明我的方法是有效的,但我知道这些事情最近发生了变化,我想确保我采取了正确的方法。

谢谢!

DrC*_*DrC 3

  1. 内置内容没问题。

  2. 最佳实践是在应用程序和服务器之间使用身份验证协议在服务器上执行收据验证(对于其他几个移动应用程序商店也是如此)。如果您在设备上执行验证,人们就可以使用现有工具绕过您的 IAP 检查并窃取内容。请查看https://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/了解一些信息。

因此,虽然不需要服务器,但建议使用服务器。只有您自己才能说保护您的内容是否值得维护服务器的麻烦。

我同意 J. Freeman 的观点,即 NSUserDefaults 中的直接存储似乎很弱。我将内容存储在本地文件中,但格式与设备绑定,并且需要服务器计算的密钥来创建它。最后,是的,您应该使用 SKPaymentQueue RestoreCompletedTransactions 来获取在另一台设备上购买的东西。请注意,恢复的交易还应该在您的服务器上验证其收据。