iOS应用程序内购买没有后端

时间:2013-03-15 16:25:41

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

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

  1. Apple指南允许这样做吗?
  2. 由于只购买1个非耗材,我认为不需要使用后端服务器。
    • 指南是否允许这样做?
    • 将结果存储在NSUserDefaults中是否安全且简单,如果安装在另一台设备上,请将其从购买的SKPayment还原中拉出来等等?
  3. 我看了几个其他问题。

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

    谢谢!

2 个答案:

答案 0 :(得分:3)

  1. 内置内容没问题。

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

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

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

答案 1 :(得分:1)

是的,没关系。您不需要后端来进行应用内购买,也可以随附内置的内容。

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