卡在沙盒帐户中
Posted
技术标签:
【中文标题】卡在沙盒帐户中【英文标题】:stuck with sandbox account 【发布时间】:2010-01-23 21:50:38 【问题描述】:我创建了一个测试帐户来签入应用购买。我可以购买并且购买成功。之后我在导航中发现了一个错误。我修复了一个错误,创建了另一个帐户并删除了我在上一个会话中登录的帐户。现在我无法再测试应用内购买了,因为应用商店会使用一个已经不存在的幽灵帐户自动登录我。尽管在每次调试会话之前我从设置中的存储注销并删除应用程序的先前版本,但我仍被要求输入密码。如何重置?
谢谢,
纳瓦
【问题讨论】:
你找到解决方案了吗? 【参考方案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、删除应用程序、关闭它并进行了干净的重建/安装,但它最终停止询问我被窃听帐户的密码。希望这可以帮助某人。
编辑:(2015 年 11 月 12 日)
所以我找到了破坏沙盒帐户的原因。它发生在恢复购买后,然后点击主页键,重新打开并再次点击恢复按钮导致崩溃。恢复保留在队列中,上述过程是退出询问密码的弹出窗口的唯一方法。
为了阻止这种情况,我补充说:
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
在我取消应用内购买管理器对象之前,通过我的主视图控制器的 tearDown 函数(由 applicationDidEnterBackground 调用:)。我认为发生的事情是我不止一次地将对象添加为事务观察者,这导致了奇怪的行为。从外观上看,这似乎完全解决了问题,因为我无法再次重新创建错误。
【讨论】:
这个问题太老了,但我相信你找到了答案。还是谢谢【参考方案2】:我遇到了同样的问题。这就是解决我的问题的方法:
-
设置 -> 重置 -> 重置所有设置
设置 -> iTunes 和 App Store -> 退出
删除应用
从 XCode 重启应用
更新:我意识到问题是我的代码中没有这一行:
[[SKPaymentQueue defaultQueue] finishTransaction:tran];
这意味着我的旧交易尚未完成,iPhone 正在尝试完成之前发生的旧交易。当我将此行添加到我的代码中时,不再发生旧用户密码请求。
【讨论】:
【参考方案3】:所以你的意思是即使你去设置应用 -> 商店 -> 退出,你仍然会从之前的测试帐户中获得用户名?您是否还尝试从设备中删除该应用程序?这为我解决了一个类似的问题。
【讨论】:
以上是关于卡在沙盒帐户中的主要内容,如果未能解决你的问题,请参考以下文章
Paypal IPN 在 paypal 帐户中不起作用,但在沙盒中正常工作