5

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

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

我看过其他几个问题。

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

谢谢!

4

2 回答 2

3
  1. 内置内容没问题。

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

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

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

于 2013-03-15T18:51:07.210 回答
2

是的,这很好。您不需要后端来进行应用内购买,并且可以内置您的内容。

我要说的一件事是要小心,将解锁信息存储在 NSUserDefaults 中,因为有人可以很容易地以这种方式伪造购买。您应该将解锁信息存储在钥匙串中。

于 2013-03-15T16:50:46.527 回答