Ios iPhone应用内购买提示登录addTransactionObserver在全新设备和新用户上

Ios iPhone应用内购买提示登录addTransactionObserver在全新设备和新用户上,ios,iphone,in-app-purchase,storekit,Ios,Iphone,In App Purchase,Storekit,我正在我的AppDelegate的didFinishLaunching方法中调用addTransactionObserver:,它会立即提示用户登录到他们的iTunes帐户,或者输入密码(如果他们已经登录)。这种情况发生在以前从未安装过应用程序的新用户身上。如果他们输入密码,什么也不会发生,应用程序也可以,但是当他们想买东西时,会再次提示他们输入密码。无论如何,当应用程序启动时,它不应该要求用户登录他们的iTunes帐户 我知道,如果不调用finishTransaction:,事务可能会陷入奇怪

我正在我的AppDelegate的didFinishLaunching方法中调用
addTransactionObserver:
,它会立即提示用户登录到他们的iTunes帐户,或者输入密码(如果他们已经登录)。这种情况发生在以前从未安装过应用程序的新用户身上。如果他们输入密码,什么也不会发生,应用程序也可以,但是当他们想买东西时,会再次提示他们输入密码。无论如何,当应用程序启动时,它不应该要求用户登录他们的iTunes帐户

我知道,如果不调用
finishTransaction:
,事务可能会陷入奇怪的状态,并提示用户登录,直到完成。然而,在我的例子中,我删除了所有沙盒测试用户,创建了一个全新的沙盒测试用户,安装了全新的应用程序,它仍然会立即提示我登录,或者输入我的密码(如果我已经登录)。我已在出厂时重置了设备,但它仍以这种方式运行


我认为可能是一些旧的未完成事务与其他测试用户帐户关联,但由于它们被删除,我无法进行检查。我还能做些什么来阻止登录提示显示?

解决了这个问题,原因是我正在创建一个
SKReceiptRefreshRequest
,并在应用程序启动时发送该请求

为总结其他任何有类似问题的人,解决弹出警报的步骤如下:

确保队列中没有任何未完成的事务。如果您调用
addTransactionObserver:
,并且存在未完成的事务,它将调用
paymentQueue:updatedTransactions:
,然后您可以对它们调用
finishTransaction:

删除iTunes connect中未使用的沙盒测试用户。如果您已登录到设备上的其中一个帐户,它可能会出于某种原因要求您登录到该帐户


确保在应用程序初始化时只调用
addTransactionObserver:
SKRequest
将要求用户登录

我有一个相关的问题:当我的应用程序调用addTransactionObserver,但队列中仍有未完成的事务时,它有时会弹出登录对话框。您写道,“当一个未完成的事务陷入一种奇怪的状态时,可能会出现一些问题。”。我想这就是我看到的。你能分享一下你提到的这些奇怪的州的链接吗?你知道有没有办法防止这种情况?非常感谢。(+1 x 2)不,对不起,我已经尝试了所有的方法,但还有其他方法要求登录。我所做的就是调用addTransactionObserver。就这样。时期我已经在应用程序内购买逻辑所在的每个位置设置了断点。我已经从iTunes connect中删除了所有内部测试和沙盒测试帐户,并从设备中注销了所有内容。当我调用“addTransactionObserver”时,它仍然要求用户每次登录一次。它阻止我提交我的应用程序。有什么想法吗?