iOS中自动更新订阅背后的逻辑是什么?

我正在与客户合作构建使用自动更新订阅的报亭应用。我似乎无法弄清楚这一点的正确逻辑。我了解应用内购买,但之前从未与订阅混淆过。

我似乎无法包住我的头来跟踪这一点。看起来苹果公司希望尽可能的难。

我希望有一款应用程序每月提供一本新杂志,作为单一的非消费品购买,或允许他们订阅。

我了解购买订阅时验证收据的概念,但之后会发生什么?应用程序是否每次启动时都会重新检查订阅,以查看订阅是否最新?初次购买后,更新收据来自哪里?

我看着城市飞艇似乎跟踪你的这个 - 但我没有找到一个示例应用程序或教程实施订阅。有没有其他的服务?

16
额外 编辑
意见: 1
如何使用订阅的产品ID进行管理?
额外 作者 Ajay Sharma,

1 答案

我希望有一款应用程序每月提供一本新杂志作为单一的非消费品购买,或允许他们订阅。

我认为苹果公司针对您的情况创建了可自动更新的应用内购买。自动更新的类比是杂志订阅,订阅在每个订阅期结束时更新。例如,您可能需要一年订阅NYTimes,在订阅结束时,NYTimes会为您支付一年的费用以保持订阅。

同样,在iTunes自动更新的情况下,除非用户在到期期限之前取消订阅,否则Apple将在订阅期满时向订阅用户收费。为了正确工作,您 - 开发人员 - 需要使用iTunes进行检查,以确定用户的订阅是否仍然有效,才允许他们访问当前月份的报亭内容。换句话说,您在验证用户的订阅收据后解锁内容。

您将从苹果公司获得的用户当前收据存储在某处(例如,NSUserDefaults)。要验证用户的收据是否仍然有效,请将存储的收据提交给Apple进行验证。

顺便说一句,您应该有一种方法让用户从您的应用程序恢复收据 - 以防他们拥有新设备或从头开始重新安装应用程序。

我同意苹果公司的文件有很多不足之处。我们花了几个星期的时间去完成我们的应用。它看起来像其他人花费相似的时间来使他们的工作。因此,如果你无法花时间去学习,那就花点时间或外包这个任务。

查看应用内编程指南,了解描述事情应该如何工作。 2011年WWDC发布的两款应用内购买视频:“iOS和Mac OS X的应用内购买”和“App Publishing新增功能”对我们也有所帮助。

其他有用的链接包括:

  1. The limited world of auto-renewable subscriptions,
  2. In App Purchases: A Full Walkthrough,
  3. Verifying Apple App Store Receipts For In App Purchases With PHP and cURL and
  4. All About In-App Purchases Part 3: Anti-Piracy Measures.

您需要在最后一个链接中使用代码-createEncodedString方法将收据正确提交给服务器进行验证。

有了这些链接,我希望我为您节省了大量的研究和试验和错误,以帮助您的工作。祝你好运。

30
额外
非常感谢您的信息。你的几段比苹果文档在解释这个方面做得更好。我会在早上看看你的链接,但我有一个问题 - 当应用程序检查当前收据是否有效时 - 收据数据来自哪里?它与刚刚进行新购买相似吗?还是有某种方法可以以某种方式请求当前收据?
额外 作者 Brodie,
所以这就像进行新的购买,还是续购购买只是坐在itunes服务器上,等待用户再次登录并看到应用程序?再次感谢伟大的信息。
额外 作者 Brodie,
@Sunny你能帮助我的链接: stackoverflow.com/questions/16102282/…
额外 作者 Ajay Sharma,
HI @Sunny,我是否真的必须将收据存储在NSUserDefault或某些持久性存储中?我可以用Apple方法来推导它吗?
额外 作者 KarenAnne,
我只是想问一下,收据是否正在改变自动更新订阅?
额外 作者 KarenAnne,
您将收据返回SKPurchase委托方法 - 就像非消耗性收据一样。如果订阅成功,您检查通话结果并剥离收据。
额外 作者 Sunny,
续订购买通常发生在当前订阅到期之前。新设备会定期刷新设备 - 通常不是确定性的(就我所能测试的结果或从其他人测试中看到的许多有趣故事而言)。但它确实刷新了。另一种强制刷新的方法是让用户执行还原操作(请记住,我早些时候提到您应该为用户提供一种恢复方法)。
额外 作者 Sunny,