ios – 无法在付款队列中完成未完成的交易

前端之家收集整理的这篇文章主要介绍了ios – 无法在付款队列中完成未完成的交易前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的应用程序在IAP沙箱中进入了一些奇怪的状态…每次启动应用程序时,都是要求特定测试用户的密码.我猜是因为未完成的交易.我真的想完成这个交易,但这是不可能的.一些背景信息和我做了什么:

>我从itunesconnect删除了该测试用户
>一旦应用启动我调用[[SKPaymentQueue defaultQueue] addTransactionObserver:self]
>在为该特定测试用户输入密码后,不接收到支付队列更新通知,或者点击取消
> [SKPaymentQueue defaultQueue] .transactions.count总是为0,所以我无法手动完成未完成的事务
>我已从设备中删除应用程序,重新启动设备 – 仍然要求密码
>我从设置中注销用户 – > iTunes&应用商店
>在取消对话框请求密码后,不知何故,我可以使用另一个测试用户登录,但下次我仍然会收到旧测试用户的密码对话框.

唯一的事情是改变包id,这在我的情况下是不可取的.希望有人知道如何摆脱未完成的交易的其他方法.

解决方法

我把这个放在这里,因为有很多坏的坏的答案提供了关于如何解决这个问题的错误的信息.它不是罕见的,或神秘的或苹果的错误,它是App Store设计的一部分,并帮助您使您的IAP内置.

不要:

永远不会删除沙盒测试用户.这使得无法解决问题,您将无限循环,直到交易最终消失为止….它会消失,但需要很长时间,如数天或数周.
>如果您删除沙盒测试用户,当您随后反复提示(例如每次您的App设置IAP)登录到测试用户商店帐户以完成交易时,您不能因为用户删除.您也可以将测试用户添加回来,因为开发者门户网站会说用户ID已被使用.
>不要:删除应用程序或重新安装iOS或任何其他此类BS.它没有任何效果,不能解决问题,浪费了大量的时间.

做:

>对所有交易调用FINISH.如果由于某种原因中断,只需在App的后续运行中完成.该应用将重复发送支付队列通知,直到您打电话完成,给您机会调用[[SKPaymentQueue defaultQueue] finishTransaction:transaction];这是故意的,并且是对中断交易的预警.

而已!完成所有交易,否则您将被发送到无尽循环地狱重复的请求,以登录一个不存在的测试用户App Store帐户每一次您的应用程序在该设备上启动:(

猜你在找的iOS相关文章