我创建了一个测试账户来检查应用内购买。我可以成功购买。之后,我发现导航中有一个漏洞。我修复了这个漏洞,创建了另一个账户,并删除了我在上一个会话中登录的账户。现在,我无法再测试应用内购买,因为应用商店会自动用一个已经不存在的幽灵账户登录。尽管在每个调试会话之前都在设置中注销商店并删除应用程序的先前版本,但我仍然被要求输入密码。我该如何重置这个问题?
谢谢, Nava
谢谢, Nava
我也曾遇到类似问题。以下是我的解决方法:
更新:我意识到问题在于我的代码中没有这一行:
[[SKPaymentQueue defaultQueue] finishTransaction:tran];
我知道这是个旧话题,但我在寻找解决方案时遇到了麻烦,并经历了一些令人昏昏欲睡的试错过程,直到我找到了一个解决方案,所以我想在这里分享一下,因为我无法在其他地方找到它。
首先,在每次交易后,请确保您调用:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
SKPaymentQueue *queue = [SKPaymentQueue defaultQueue];
for (SKPaymentTransaction *transaction in queue.transactions) {
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
函数,我添加了这行代码:
[queue finishTransaction:transaction];
我不确定上述两个步骤中哪一个修复了错误,因为直到我注销了iPhone,删除了应用程序,关闭电源,并进行了干净的重建/安装,它才停止要求我输入有缺陷的帐户的密码。希望这能帮助某人。
所以我发现破坏沙盒帐户的原因。在恢复购买后,然后按home键,重新打开并再次点击恢复按钮导致崩溃。 恢复保留在队列中,以上过程是摆脱要求输入密码弹出窗口的唯一方法。
为了阻止这种情况,我添加了:
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
在我的主视图控制器中,在我将应用程序切换到后台之前,通过tearDown函数(由applicationDidEnterBackground:调用)对我的应用内购买管理器对象进行了nil处理。 我认为发生的情况是我多次将该对象添加为事务观察者,这导致了奇怪的行为。从外观上看,这似乎已完全解决了问题,因为我再也无法重新创建该错误。
你的意思是,即使你进入“设置”应用程序 -> “商店” -> “注销”,你仍然可以从之前的测试帐户中获取用户名?你是否也尝试从设备中删除该应用程序?这为我解决了类似的问题。