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 IAP 和Apple 托管的内容 的简约示例。
【讨论】:
以上是关于iOS9 SKPaymentQueue 相关问题 - 应用返回前台时事务意外终止的主要内容,如果未能解决你的问题,请参考以下文章
iPhone:SKPaymentQueue addPayment 啥时候触发了 applicationWillResignActive 回调?
iOS9全新的联系人相关框架——Contacts Framework
从“UITableViewCell”转换为不相关类型“UIView”总是失败iOS9
关于iOS9中的App Transport Security相关说明及适配(更新于2016.7.1)