坚持使用沙箱帐户

时间:2010-01-23 21:50:38

标签: iphone sandbox in-app-purchase itunesconnect

我创建了一个测试帐户来检查应用购买情况。我可以购买,购买成功。之后我发现了一个导航错误。我修复了一个错误,创建了另一个帐户并删除了我在上一个会话中登录的帐户。现在我无法测试应用内购买了,因为应用商店会自动使用已经不存在的ghost帐户登录。我被要求输入密码,尽管在每个调试会话之前我从“设置”中的“商店”退出并删除了以前版本的应用程序。我该如何重置?

谢谢,

Nava

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。这就解决了我的问题:

  1. 设置 - >重置 - >重置所有设置
  2. 设置 - > iTunes& App Store - >退出
  3. 删除应用
  4. 从XCode重启应用
  5. 更新:我意识到问题是我的代码中没有这一行:

    [[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,删除应用程序,关闭它,并进行了干净的重建/安装,最终停止询问我窃听帐户的密码。希望这有助于某人。

编辑:(11/12/15)

所以我找到了破坏沙箱帐户的原因。它发生在恢复购买后,然后按下主页键,重新打开并再次点击恢复按钮,导致崩溃。恢复保留在队列中,上面的过程是退出弹出窗口要求输入密码的唯一方法。

为了阻止这种情况,我补充道:

[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];

通过我的主视图控制器的tearDown函数(由applicationDidEnterBackground :)调用,之前我的应用内购买管理器对象没有。我认为发生的事情是我不止一次将对象添加为事务观察者,这导致了奇怪的行为。从它的外观来看,这似乎完全解决了问题,因为我无法再次重新创建错误。

答案 2 :(得分:0)

所以你的意思是即使你去设置应用程序 - >商店 - >注销,您仍然可以从之前的测试帐户获取用户名?您是否也尝试从设备中删除该应用?这为我解决了类似的问题。