Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Mac和iOS应用内购买行为不同_Macos_In App Purchase - Fatal编程技术网

Macos Mac和iOS应用内购买行为不同

Macos Mac和iOS应用内购买行为不同,macos,in-app-purchase,Macos,In App Purchase,在iOS上,启动支付后,defaultQueue包含一个不包含transactionId的“虚拟”事务。事务完成(完成或失败)后,“虚拟”事务将替换为包含实际事务ID的新事务 然而,Mac版本的表现有所不同。启动支付后,我看到updatedTransactions调用了两次,defaultQueue包含两个没有transactionId的“虚拟”事务。事务完成(完成或失败)后,将第三个事务添加到包含实际transactionId的队列中。首次对此事务调用finishTransaction时,它通

在iOS上,启动支付后,defaultQueue包含一个不包含transactionId的“虚拟”事务。事务完成(完成或失败)后,“虚拟”事务将替换为包含实际事务ID的新事务

然而,Mac版本的表现有所不同。启动支付后,我看到updatedTransactions调用了两次,defaultQueue包含两个没有transactionId的“虚拟”事务。事务完成(完成或失败)后,将第三个事务添加到包含实际transactionId的队列中。首次对此事务调用finishTransaction时,它通常会从队列中删除一个虚拟事务。我们运行的循环器发现已完成的事务仍在队列中,并对其进行处理。对finishTransaction的第二次调用将其从队列中删除。此时,defaultQueue仍然包含一个“虚拟”事务实例,该事务永远不会解析并无限期地保持在SKPaymentTransactionStatePurchasing状态

这种行为不仅会导致内存泄漏,因为每次购买后队列会继续增长,还会导致我们的游戏内购买处理程序被调用两次

我只在沙箱环境中测试过这个


有人在Mac上遇到过类似的问题吗?

更新:我最终为这个问题实施了解决方案,但这个问题对我来说仍然存在。