作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的 AppDelegate 中,我运行这个命令:
SKPaymentQueue.defaultQueue().addTransactionObserver(self.storeDel);
当我运行“购买恢复”并立即终止应用程序时,在重新启动它后,用户界面在处理所有购买所需的时间段内卡住(我测试了其中的许多,每次我验证苹果收据 - 用户界面卡住大约需要一分钟!!)
我认为可能是事务队列启动阻塞了..所以我将代码更改为:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
SKPaymentQueue.defaultQueue().addTransactionObserver(self.storeDel);
});
而且它没有帮助......
现在 - 我开始怀疑队列在我的主线程上运行......这对我来说没有意义......
我调试了 - 并且......支付处理正在“队列:com.apple.main-thread(串行)”上运行。我假设这也是用户 GUI 线程(否则 GUI 没有理由卡住......)。
所以...
我能做什么??有什么解决方案可以让我处理收据并做出响应...?
谢谢!
最佳答案
我联系了 Apple,试图打开一个关于这个问题的错误报告。
他们说,一般来说,这是预期的行为(是的!我的 GUI 应该在处理付款时被卡住)。
如果这也困扰您,http://bugreport.apple.com是打开有关此问题的服务请求的网站。
我认为这是一个有缺陷的设计,它是一个错误,Apple 认为这是可以接受的。
关于swift - 强制 SKPaymentQueue 在后台线程上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38944749/
我是一名优秀的程序员,十分优秀!