首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何正确处理可自动订阅(iOS)的更新

如何正确处理可自动订阅(iOS)的更新
EN

Stack Overflow用户
提问于 2017-01-30 21:04:48
回答 4查看 1.5K关注 0票数 2

在苹果的文档中发现了这一声明:

订阅成功续订后,Store将更新的事务添加到事务队列中。您的应用程序在启动时检查事务队列,并以与其他事务相同的方式处理更新。

如果我一开始就这么做的话:

代码语言:javascript
运行
复制
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

什么都没有发生-订阅没有更新(使用测试模式)。

如果我加上

代码语言:javascript
运行
复制
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

然后,它超越了完整的历史购买,这也不是我想要的。

正确的处理方法是什么?

EN

回答 4

Stack Overflow用户

发布于 2017-01-31 09:41:17

您需要了解的一件事是,在沙箱环境中测试自动可再生订阅时,有时订阅不会得到更新,也不会收到商店的更新调用。

这在沙箱中是正常的,在沙箱环境中调用restoreCompletedTransactions有时会触发商店的更新。沙箱中订阅本身的持续时间是不同的:下面是沙箱中的持续时间表:

只要添加[[SKPaymentQueue defaultQueue] addTransactionObserver:self],当你的应用程序启动,在生产中,它将得到更新,你将收到电话。

票数 2
EN

Stack Overflow用户

发布于 2017-02-01 06:59:15

Apple购买存储工具包文档:-

订阅成功续订后,Store将更新的事务添加到事务队列中。您的应用程序在启动时检查事务队列,并以与其他事务相同的方式处理更新。

这意味着,如果用户的订阅是自动更新的,而当时我们的应用程序没有运行,那么Apple在交易队列中添加了更新的交易。因此,当您打开应用程序时,我们可以从事务队列中获得更新的事务细节。

在storekit文件中还提到了另一条声明,如:

请注意,如果您的应用程序在订阅更新时已经在运行,则不会调用事务观察者;您的应用程序在下次启动时会发现更新的情况。

解决方案:如何处理自动更新订阅?

根据Apple的最佳实践,我们应该在AppDelegate的“didFinishLaunchingWithOptions”中添加以下一行:-

代码语言:javascript
运行
复制
SKPaymentQueue.defaultQueue().addTransactionObserver(SubscriptionObserverClassReference)

&用于验证订阅,有两种可用方式:

1)使用服务器:设置验证用户订阅的cron作业,绕过用户的订阅过期日期。因此,我们可以根据过期日期识别更新或未更新的用户订阅。

2)使用StoreKit观察者:-每次更新用户订阅时,我们都会得到更新的事务信息。因此,我们可以在此基础上采取相应的行动。

票数 1
EN

Stack Overflow用户

发布于 2017-02-03 14:38:42

注释和文档是正确的:在start上向PaymentQueue添加事务观察者就足够了。在我的例子中,对于我一直使用的Sandbox用户来说,更新没有被触发。我创造了一个新的,它起作用了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41945384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档