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

时间:2015-09-29 19:44:18

标签: ios download in-app-purchase ios9 storekit

突然/意外/从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上。 应用程序只有一个按钮,可以启动事务/下载过程。

问题

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

重现问题...

  1. 将此项目改编为您的开发人员。环境(将NON_CONSUMABLE_PRODUCT_WITH_HOSTED_CONTENT设置为您的IAP产品ID)。

    • 创建测试应用(iTunes Connect)。

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

  2. 按下按钮"获取产品"。

  3. 等到下载开始。

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

  5. (重新)激活应用程序(触摸应用程序图标)。

  6. SKPaymentQueue最终将发送一个或两个下载更新事件。

  7. !! SKPaymentQueue将向观察者发送paymentQueue(队列:SKPaymentQueue,removedTransactions Transactions:[SKPaymentTransaction])`消息。

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

  9. 已知的解决方法

    • 下载时将应用置于前台。

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

2 个答案:

答案 0 :(得分:1)

您是否为应用添加了背景密钥?

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

  1. info.plist方式 - 添加"获取" for" UIBackgroundModes"
  2. 转到功能>背景模式可以启用此功能。然后选择获取字段。
  3. https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW22

答案 1 :(得分:0)

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