我正在使用 Apple 建议的交易 VerificationController 代码更新我的 iOS 应用程序,以验证应用程序内购买,因为最近发布的“黑客”允许人们购买应用内购买而无需支付,因为来自欺骗性 Apple 服务器的欺骗性收据。
我已经集成了所有内容,现在正在测试。我已多次运行该应用程序,并且验证内容已运行多次。
我想测试有关购买的所有内容,包括从全新的应用程序和 AppleID 开始。所以我从我的测试设备上完全删除了这个应用程序。我在 iTunes Connect 中创建了一个全新的“测试用户”AppleID。我去了我的测试设备上的设置应用程序,去商店,并将设备的默认 AppleID 更改为这个新创建的 AppleID。
我使用调试器从 Xcode 重新运行应用程序,它将应用程序重新安装到测试设备上并重新运行。
问题是,几乎在启动时,测试设备会立即显示 AppleID 密码警报类型的视图,并询问我最初用于测试所有内容的旧 AppleID 的密码,包括原始应用内购买和验证。它不会要求新设备 AppleID 的密码,如在商店下的“设置”应用程序中设置的那样。
当我将它作为一个新应用程序运行时,验证码不会运行,并且我的任何例程中都没有运行任何与 Apple StoreKit 内容相关的代码,除了一个单独的
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
(观察者是我的 StoreKit 东西的委托对象,并且已创建但其中没有任何例程运行,除了 init 和 init 什么都不做,除了为自己设置一个静态变量以创建一个单例类型类)
出于检查目的,我还添加了
NSLog(@"in App Delegate, payment queue transactions are %@", [[SKPaymentQueue defaultQueue] transactions]);
这表明没有旧交易。
我不知道为什么在新安装应用程序时它开始询问原始测试用户的 AppleID,设备商店的 AppleID 不同,并且我无法识别正在运行的访问 StoreKit 的代码(除了上面提到的)。
对此的任何见解将不胜感激。
ETA:在密码对话框中点击取消不会导致任何额外代码在应用程序中运行,也不会阻止应用程序运行。
如果我随后进入应用内购买屏幕(应用程序会在该屏幕上查询商店以获取可用的应用内购买),它会以相同的方式再次在旧 AppleID 上要求输入密码。我可以取消,似乎什么都没有发生。如果我真的在我的应用程序中触摸“恢复购买”按钮,它会要求输入在商店设置中设置的新 AppleID 上的密码。我没有超过这一点,因为我想了解正在发生的事情,并且不想通过完成/尝试在新 AppleID 下进行恢复或购买来搞砸事情。
谢谢