本文介绍了无法在付款队列中完成未完成的交易的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我的应用程序在IAP沙箱中进入了一些奇怪的状态...每次启动应用程序时都会询问特定测试用户的密码。我想由于未完成的交易。我真的想完成那笔交易,但这是不可能的。一些背景信息以及我为它做了些什么:

My application went to some odd state in IAP sandbox... Every time I launch application it is asking for password of particular test user. I guess due to unfinished transaction. I really want to finish that transaction, but it's not possible. Some background info and what I have done for it:


  • 我从itunesconnect删除了该测试用户

  • 一旦应用程序启动,我就会调用 [[SKPaymentQueue defaultQueue] addTransactionObserver:self]

  • 没有收到付款队列更新通知在我为该特定测试用户输入密码后,或者点击取消

  • [SKPaymentQueue defaultQueue] .transactions.count 始终为 0 ,所以我无法手动完成未完成的交易

  • 我从设备删除应用程序,重启设备 - 仍然要求输入密码

  • 我从设置 - > iTunes& App Store

  • 在我取消要求输入密码的对话框之后,我能够以其他方式登录其他测试用户,但下次我仍然会收到旧测试用户密码的对话框。 / li>
  • I've deleted that test user from itunesconnect
  • As soon as application launches I call [[SKPaymentQueue defaultQueue] addTransactionObserver:self]
  • No payment queue update notification is received after I enter password for that particular test user, or hit cancel
  • [SKPaymentQueue defaultQueue].transactions.count is always 0, so I can't manually finish unfinished transactions
  • I've delete app from device, restarted device - still asking for password
  • I am logging out of user from Settings -> iTunes & App Store
  • After I cancel dialog box asking for password, somehow I am able to login with another test user, but next time I am still getting dialog box for password of old test user.

唯一要做的就是更改包ID,这在我的情况下是不可取的。希望有人知道如何摆脱未完成的交易。

The only thing is left to change bundle id, which is not desirable in my case. Hopefully someone knows alternative ways how to get rid of unfinished transaction.

推荐答案

我把它放在这里因为有很多非常糟糕,错误的答案,提供有关如何解决此问题的错误信息。它不是那么罕见,或神秘或Apple漏洞,它是App商店设计的一部分,可帮助您正确构建IAP。

I'm putting this here because there are a lot of really bad, bad answers out there that provide WRONG information on how to resolve this problem. It is not that rare, or mysterious or an Apple bug, it's part of the App store design and there to help you get your IAP built right.

DO NOT:


  • 曾经永远删除沙盒测试用户。这使得无法解决问题,你将进入 无限循环 地狱,直到交易最终消失......它确实会消失,但需要很长时间,比如几天或几周。

  • 如果您删除沙箱测试用户,当您随后反复提示(例如您的应用程序每次设置IAP时)登录测试用户存储帐户 完成 该交易,您不能因为该用户已被删除。您也无法添加测试用户,因为开发人员门户会说用户ID已经 已经使用

  • 请勿: 删除应用 重新安装iOS 或任何其他此类BS。它没有效果,没有解决问题,浪费了很多时间。

  • Ever, ever, ever delete the sandbox test user. This makes it impossible to resolve the problem and you will be in endless loop hell until the transaction eventually goes away.... it does go away but it takes a long time, like days or weeks.
  • If you delete the sandbox test user, when you are subsequently repeatedly prompted (like EVERY TIME your App sets up IAP) to log into the test user store account to finish the transaction, you can't because the user has been deleted. Nor will you be able to add the test user back because the developer portal will say that user id has already been used.
  • Do not: delete the App or re-install iOS or any other such BS. It has no effect, doesn't solve the problem and wastes a lot of time.

DO:


  • 在所有交易中调用 FINISH 。如果由于某种原因中断了一个,只需在App的后续运行中完成。该应用程序将重复发送支付队列通知,直到您呼叫完成为止,让您有机会致电 [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 这是故意的,预防中断交易。

  • Call FINISH on ALL transactions. If one is interrupted for some reason, simply complete on a subsequent run of the App. The app will be repeatedly sent the payment queue notice until you call finish on it, giving you the opportunity to call [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; This is intentional and a pre-caution against interrupted transactions.

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

That's it! Finish all transactions, else you will be sent to the Endless Loop hell of repeated requests to sign into a non-existent test user App Store account every single time your App launches on that device :(

这篇关于无法在付款队列中完成未完成的交易的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-06 16:30