iOS9 SKPaymentQueue 相关问题 - 应用返回前台时事务意外终止

Posted

技术标签:

【中文标题】iOS9 SKPaymentQueue 相关问题 - 应用返回前台时事务意外终止【英文标题】:iOS9 SKPaymentQueue related issue - transaction unexpectedly terminated when app returns to foreground 【发布时间】:2015-09-29 19:44:18 【问题描述】:

交易突然/意外/从 SKPaymentQueue 中删除 - 任何想法为什么?

简介

我们在 ios-9 和 iOS-9.0.1 下遇到了 SKPaymentQueue 的奇怪行为。我们怀疑这是 iOS 问题。 此示例是演示 SKPaymentQueue 相关问题的最小应用程序框架。下载示例here。

事实

沙盒环境中出现问题 (iOS 9.0.1)。 TestFlight 环境中出现问题 (iOS 9.0.1)。 从未在生产环境中测试过。 从未在 iOS 9.1 /beta/ 上测试过。 iOS 8.4.1 上从未出现此问题。

应用

此应用需要一个非消耗性 IAP 产品,其内容托管在 Apple 上。 应用程序只有一个按钮来启动交易/下载过程。

问题

当应用从前台移到后台再回到前台时,下载过程意外终止。

重现问题...

    使这个项目适应您的开发。环境(将 NON_CONSUMABLE_PRODUCT_WITH_HOSTED_CONTENT 设置为您的 IAP 产品 ID)。

    创建一个测试应用 (iTunes Connect)。

    托管非消耗性 IAP 产品(应用程序加载器)。

    按下“获取产品”按钮。

    等待下载开始。

    按主页按钮退出应用程序。

    (重新)激活应用(触摸应用图标)。

    SKPaymentQueue 最终会发送一到两个下载更新事件。

    !! SKPaymentQueue 会发送 paymentQueue(queue: SKPaymentQueue, removedTransactions transactions: [SKPaymentTransaction])` 消息给观察者。

    !!下载现已终止(无事件)。

已知的解决方法

下载时将应用程序保持在前台。

在下载完成之前不要激活应用程序(在系统级别),然后激活应用程序。

【问题讨论】:

向苹果报告的问题 ID 为 22912989。 我遇到了完全相同的行为,非常令人沮丧。您是否设法找到上述解决方法之外的任何解决方案?也开始赏金。 不。我们的应用程序现在正在等待公开发布。我们尝试了很多方法来杀死这个错误......我们不能再等了。因此,下一个测试人员是我们的用户自己。 :( 好消息,它今天突然开始为我们工作了。我们没有做任何改变——这似乎是苹果方面的一个已解决的小故障。你看到同样的东西吗? 我刚刚测试过了。这是真的 - 问题消失了:) - 我们这边没有任何改变。但 !!我们已经花费了至少 15 个程序员小时来解决无法解决的问题 - 究竟是为了什么? 【参考方案1】:

您是否正在为您的应用添加背景键?

您可以在 info.plist 或功能中设置它们...

    info.plist 方式 - 为“UIBackgroundModes”添加“fetch” 转到功能 > 后台模式将其打开。并选择提取字段。

https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW22

【讨论】:

【参考方案2】:

好消息,异常突然消失了,结果 - 这个问题已经结束/没有任何明显的结论/。 Github code 是这个问题的副产品,可以用作non-consumable IAPApple 托管的内容 的简约示例。

【讨论】:

以上是关于iOS9 SKPaymentQueue 相关问题 - 应用返回前台时事务意外终止的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:SKPaymentQueue addPayment 啥时候触发了 applicationWillResignActive 回调?

iOS9全新的联系人相关框架——Contacts Framework

从“UITableViewCell”转换为不相关类型“UIView”总是失败iOS9

关于iOS9中的App Transport Security相关说明及适配(更新于2016.7.1)

关于iOS9中的App Transport Security相关说明及适配(更新于2016.7.1)

如何修复 iOS9 UIWebview 中的 window.location 问题