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

ort*_*dog 5 download storekit in-app-purchase ios ios9

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

介绍

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

事实

  • 问题出现在沙箱环境(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产品(Application Loader).

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

  3. 等到下载开始.

  4. 按Home键退出应用程序.

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

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

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

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

已知的解决方法

  • 下载时将应用程序保留在前台.

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

har*_*t07 1

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

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

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

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