iOS应用内购买无后端

iOS应用内购买无后端,ios,objective-c,in-app-purchase,backend,Ios,Objective C,In App Purchase,Backend,我正在调查应用程序内购买的使用情况,基本上是我的应用程序的“专业”版本。 该应用程序本身是免费的,但一旦进入,用户就可以选择购买专业内容(只有一件事)。“专业”内容已经在应用程序中,无需下载,只需“解锁”即可 苹果指南允许这样做吗 由于只需购买1台非消耗品,我认为不需要使用后端服务器。 同样,指南允许这样做吗 将结果存储在NSUserDefaults中是否安全简单?如果安装在另一台设备上,是否从购买的SKPayment restore等设备中提取结果 我看了其他几个问题 这些似乎表

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

  • 苹果指南允许这样做吗
  • 由于只需购买1台非消耗品,我认为不需要使用后端服务器。
    • 同样,指南允许这样做吗
    • 将结果存储在NSUserDefaults中是否安全简单?如果安装在另一台设备上,是否从购买的SKPayment restore等设备中提取结果
  • 我看了其他几个问题

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


    谢谢

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

    不过,我要说的一点是,要小心将解锁信息存储在NSUserDefaults中,因为有人很容易通过这种方式伪造购买。您应该将解锁信息存储在钥匙链中

  • 内置内容没有问题

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

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


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

    该链接不起作用(与Apple docs一样)。是这个吗?从那里链接以在服务器上进行验证的文档。