iOS 应用内购买无后端

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

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

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

我已经查看了其他几个问题。

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

谢谢!

最佳答案

  1. 内置内容没问题。

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

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

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

关于iOS 应用内购买无后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15437420/

相关文章:

iphone - 完全困惑在哪里更改 openCV 中的代码

ios - IAP(应用内购买)入门价格我如何管理它 iOS?

objective-c - 变量不可赋值(缺少 __block 类型说明符)

ios - 使用 PerformSelectorOnMainThread 关闭 uiview

iphone - 使用沙箱测试帐户在应用程序中进行测试时出现问题

ios - 上传 IAP 到 Apple

ios - 如何跟踪变量在哪一点被更改?

ios - 获取 invitable_friends Facebook API iOS

ios - 在 iOS 中,当屏幕从纵向旋转到横向时,如何让 textView 展开

objective-c - opencv 2.2 xcode4 ios4.3