当您提交应用程序内购买时,它会在询问您是否要购买时引发 applicationWillResignActive,这是否正常?
例如:
[[SKPaymentQueue defaultQueue] addPayment:payment];
这会导致应用退出事件状态,然后一旦您点击“购买”或“取消”,就会调用 applicationWillEnterForeground。
有没有办法知道是应用内购买导致应用程序退出,以便当它再次进入前台时,我可以标记一些要跳过的内容?
谢谢
最佳答案
好的,这就是我要做的,因为我想不出任何其他方法...
当应用程序重新启动时,它会调用 application:didFinishLaunchingWithOptions,当它从后台启动时,它会调用 applicationWillEnterForeground。在这两种情况下,它总是调用 applicationDidBecomeActive,这是我在发生 IAP 时想要跳过的代码。
当应用程序关闭或移至后台时,它总是调用 applicationWillResignActive,然后调用 applicationDidEnterBackground。
我注意到 IAP 会调用 applicationWillResignActive,然后调用 applicationDidBecomeActive,仅此而已。
所以在 application:didFinishLaunchingWithOptions 中我会设置一个变量 startupDidFinish=1
然后在 applicationWillEnterForeground 中我将设置一个变量 startupForeground=1
在 applicationDidBecomeActive 中我会这样做:
//SKIP if application resigned active then becomes active again.
if (startupDidFinish == 1 || startupForeground==1) {
//Do normal startup stuff
}
startupDidFinish = 0;
startupForeground = 0;
所以这将允许您跳过 IAP 之类的代码(我认为 SMS 也以相同的方式工作)。
关于iphone - 如何知道 StoreKit In App Purchases 导致了 applicationWillResignActive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9424302/