我创建了一个测试帐户来检查应用购买情况。我可以购买,购买成功。之后我发现了一个导航错误。我修复了一个错误,创建了另一个帐户并删除了我在上一个会话中登录的帐户。现在我无法测试应用内购买了,因为应用商店会自动使用已经不存在的ghost帐户登录。我被要求输入密码,尽管在每个调试会话之前我从“设置”中的“商店”退出并删除了以前版本的应用程序。我该如何重置?
谢谢,
Nava
答案 0 :(得分:1)
我遇到了同样的问题。这就解决了我的问题:
更新:我意识到问题是我的代码中没有这一行:
[[SKPaymentQueue defaultQueue] finishTransaction:tran];
这意味着我的旧交易没有完成,iPhone正试图完成之前发生的旧交易。当我将此行添加到我的代码中时,旧用户密码请求不再发生。
答案 1 :(得分:1)
我知道这是一个古老的主题,但我找不到解决方案,并经历了一些令人头脑麻木的试验和错误,直到我找到了解决方案,所以我想我会在这里分享它,因为我无法在任何地方找到它其他
首先,请确保在您调用的每笔交易之后:
[[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];
在switch语句的SKPaymentTransactionStateRestored和SKPaymentTransactionStateFailed案例中。不要将它添加到购买状态,因为不允许根据我所知的情况调用完成状态。
我不确定上述两个步骤中的哪一个修复了该错误,因为它一直存在,直到我退出iPhone,删除应用程序,关闭它,并进行了干净的重建/安装,最终停止询问我窃听帐户的密码。希望这有助于某人。
所以我找到了破坏沙箱帐户的原因。它发生在恢复购买后,然后按下主页键,重新打开并再次点击恢复按钮,导致崩溃。恢复保留在队列中,上面的过程是退出弹出窗口要求输入密码的唯一方法。
为了阻止这种情况,我补充道:
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
通过我的主视图控制器的tearDown函数(由applicationDidEnterBackground :)调用,之前我的应用内购买管理器对象没有。我认为发生的事情是我不止一次将对象添加为事务观察者,这导致了奇怪的行为。从它的外观来看,这似乎完全解决了问题,因为我无法再次重新创建错误。
答案 2 :(得分:0)
所以你的意思是即使你去设置应用程序 - >商店 - >注销,您仍然可以从之前的测试帐户获取用户名?您是否也尝试从设备中删除该应用?这为我解决了类似的问题。