Iphone 应用程序在运行时请求AppleID
我正在用苹果建议的交易验证控制器代码更新我的iOS应用程序,以验证应用程序内的购买,因为最近发布的“黑客”允许人们在ap购买时购买,而无需支付来自伪造苹果服务器的伪造收据 我已经把所有东西都整合好了,现在正在测试。我已经运行了几次应用程序和验证的东西已经运行了好几次 我想测试所有关于购买的东西,包括从一个全新的应用程序和AppleID开始。所以我完全从我的测试设备上删除了这个应用程序。我在iTunes Connect中创建了一个全新的“测试用户”应用程序ID。我转到测试设备上的设置应用程序,转到存储,并将设备的默认AppleID更改为新创建的AppleID 我使用调试器从Xcode重新运行应用程序,调试器将应用程序重新安装到测试设备上,并以全新方式运行 问题是,几乎在启动时,测试设备立即显示AppleID密码警报类型视图,并要求提供旧AppleID的密码,我最初用于测试所有内容,包括原始的应用内购买和验证。它不会要求输入新设备AppleID的密码,如store下设置应用程序中设置的密码 当我把它作为一个新的应用程序运行时,验证代码不会运行,并且除了一个单独的应用程序之外,我的任何例程都不会运行任何与Apple StoreKit相关的代码Iphone 应用程序在运行时请求AppleID,iphone,ios,storekit,in-app,Iphone,Ios,Storekit,In App,我正在用苹果建议的交易验证控制器代码更新我的iOS应用程序,以验证应用程序内的购买,因为最近发布的“黑客”允许人们在ap购买时购买,而无需支付来自伪造苹果服务器的伪造收据 我已经把所有东西都整合好了,现在正在测试。我已经运行了几次应用程序和验证的东西已经运行了好几次 我想测试所有关于购买的东西,包括从一个全新的应用程序和AppleID开始。所以我完全从我的测试设备上删除了这个应用程序。我在iTunes Connect中创建了一个全新的“测试用户”应用程序ID。我转到测试设备上的设置应用程序,转到
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
(observer是StoreKit的委托对象,它是被创建的,但是除了init之外,它没有运行任何例程,init除了为自己设置一个静态变量来创建一个单例类型类之外,什么都不做)
为了便于检查,我还添加了
NSLog(@"in App Delegate, payment queue transactions are %@", [[SKPaymentQueue defaultQueue] transactions]);
这表明没有旧的交易
我不知道为什么它在新安装应用程序时开始询问原始测试用户的AppleID,设备存储区的AppleID不同,并且我无法识别正在运行的访问StoreKit的代码(如上所述除外)
如能对此有所了解,将不胜感激
ETA:在密码对话框中触摸取消不会导致应用程序中运行任何额外代码,也不会阻止应用程序运行
如果我进入应用程序内购买屏幕(应用程序在其中查询应用程序内的可用购买),它会以相同的方式在旧的AppleID上再次请求密码。我可以取消,但似乎什么也没发生。如果我真的按了应用程序中的“恢复购买”按钮,它会询问在商店设置中设置的新应用程序ID上的密码。我还没有超过这一点,因为我想了解正在发生的事情,不想在新的AppleID下完成/尝试恢复或购买而把事情搞砸
谢谢
StoreKit.framework
在系统范围内工作,因此显示的Apple ID与您的应用程序没有任何关系,重新安装应用程序不会产生任何影响
但是,您可以:
StoreKit
应提示输入电子邮件和密码。修复步骤:
我也遇到了同样的问题,我费了好几个小时才解决 如前所述,
StoreKit
在系统范围内工作,系统不断要求登录任何需要登录的事务
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
尚未调用。我正在使用,查看源代码,发现以下可疑行:
if (error.code != RMStoreErrorCodeUnableToCompleteVerification) {
// If we were unable to complete the verification we want StoreKit to keep reminding us of the transaction
[queue finishTransaction:transaction];
}
可能就是这样发生的:
- 我首先用我的测试苹果ID购买了这个产品
- 出于测试目的,我删除了该产品
- 我试图再次购买它。此时我输入了错误的凭证,RMStore没有调用
[[SKPaymentQueue defaultQueue]finishTransaction:
- 应用程序在每次启动时都开始要求登录
我不知道是否有其他方法可以解决此问题(即重置StoreKit队列)。无论如何,请始终记住在代码中调用
finishTransaction
。我不知道您是否看到有关AppleID与存储在设置中的AppleID不相关的评论(“设备存储区的AppleID不同”)这几乎就像iOS在某处存储了信息,上面写着“此应用程序正在请求以前的购买信息”,并且在后续加载时情不自禁地请求。只有删除应用程序才能帮我摆脱它。@chadbag啊,对不起,没有取消