关于应用内购买的问题:自动更新订阅

Posted

技术标签:

【中文标题】关于应用内购买的问题:自动更新订阅【英文标题】:Questions about in-app purchasing: auto-renewable subscriptions 【发布时间】:2011-10-15 16:02:28 【问题描述】:

这是我的情况:我有一个免费的应用程序,我计划通过每月 0.99 美元(自动更新)的订阅来提供访问权限。

我仍在沙盒中进行测试,因此我看到自动续订订阅真正工作的方式可能会被扭曲。我的问题如下:

1) 可以支持自动续订订阅的最低 ios 版本是多少?早期 iOS 版本的用户将如何体验上述功能?

2) 如果我理解正确,自动更新订阅被归类为“非消耗性”项目,只能购买一次。如果我尝试在到期日(或续订开始日期)之前重新购买订阅,会发生什么情况:我不会再次被收费,对吗?

3) 如果订阅自动续订,我的应用会收到通知吗?我想应用程序会自动在我的 SKPaymentTransactionObserver 中发送一个 paymentQueue:updatedTransactions: 方法调用,但在沙箱中工作时我从未见过这种情况发生。就我而言,我必须在启动期间针对购买收据的到期日期运行本地时间戳检查。

4) 如果我必须与 iTunes 服务器通信,使用我从初始购买(或连续续订)保存的收据,我如何正确检查 iTunes 订阅是否仍然有效或用户是否已经禁用自动续订?

5) 我的应用内购买项目是订阅本身,它的产品代码为应用所知......当你已经知道它是什么时,真的有必要检索产品详细信息吗? Apple 的 IAP 指南似乎很清楚我需要这样做,但对我来说似乎只是开销。

【问题讨论】:

【参考方案1】:

您尝试过我的 MKStoreKit 吗? http://blog.mugunthkumar.com/coding/mkstorekit-4-0-supporting-auto-renewable-subscriptions/

第 1 点:不确定,但我最好的猜测是 iOS 4.3。

第 2 点:当您重新购买时,AppStore 会发送一条消息,表明您已订阅该产品。从技术上讲,您不应该显示允许用户订阅的按钮(当订阅处于活动状态时禁用它,MKStoreKit 提供通知来执行此操作)

第 3 点:是的,您的应用会收到通知。 MKStoreKit 使用此通知并自动为您存储最新收据

第 4 点:在启动时,您应该发布您从 iTunes 服务器获得的最后一个收据,并检查它是否仍然有效。 AppStore 会返回最新收据的购买日期。从中您必须计算收据的有效性(因为您知道订阅​​的长度。请注意,iTunes App Store 服务器不会向您发送任何有关订阅长度的信息)

第 5 点:应在应用启动时获取所有产品详细信息。否则,当客户购买并在完成之前退出应用程序(由于电话)时,您将无法知道当您的应用程序恢复时他购买了哪种产品。对于应用内购买,延迟加载实际上没有意义。

【讨论】:

这些都是经过深思熟虑的答案。谢谢。关于第 5 点,我只有一个应用内商品,所以完全不会混淆。 Mugunth,至第 3 点,您还没有回答他的问题(因为这也是我的问题)。你所做的只是告诉他你的框架做了什么。但是到底发生了什么,这个通知是从哪里来的呢?真的是像 Aldrich 所问和我怀疑的那样 SKPaymentTransactionObserver 吗? 不过,感谢您对第 4 点的澄清。这就是我所怀疑的,但直到现在无法确认 :-) SandBox:如果我尝试在短时间内购买相同的产品,有时会出现“您已订阅该产品”的警报。那么我可以以编程方式跟踪此警报吗?调试器永远不会进入 SKPaymentTransactionStateRestored! 在第 (3) 点,我如何在应用程序打开时获得最新的收据,你能帮我吗

以上是关于关于应用内购买的问题:自动更新订阅的主要内容,如果未能解决你的问题,请参考以下文章

iOS:应用内购买管理多个自动更新订阅,带有升级和降级选项

在应用内购买中取消自动续订订阅

iOS 8 应用程序中的自动更新订阅问题

如何在 iTunes Connect 中提交自动更新订阅 + 应用程序以供审核?

iPhone - 如何检索应用内购买的自动续订订阅的持续时间

iOS 6 - 如何验证应用内可更新订阅?