如何知道应用程序Purchses中的SKStoreKit导致applicationWillResignActive?

jsh*_*erk 4 iphone cocoa-touch objective-c ios4 ios

提交应用内购买时是否正常,它会导致applicationWillResignActive询问您是否要购买?

例如:

    [[SKPaymentQueue defaultQueue] addPayment:payment];
Run Code Online (Sandbox Code Playgroud)

这会导致应用程序重新激活,然后一旦您点击BUY或CANCEL,然后调用applicationWillEnterForeground.

有没有办法知道这是一个应用内购买导致应用程序辞职,以便当它再次进入前台时,我可以标记一些要跳过的东西?

谢谢

jsh*_*erk 8

好吧,这就是我要做的事情,因为我想不出任何其他方式......

当应用程序启动时,它会调用application:didFinishLaunchingWithOptions,当它从后台启动时,它会调用applicationWillEnterForeground.在这两种情况下,它总是调用applicationDidBecomeActive,这是我在IAP发生时要跳过的代码.

当应用程序关闭或移动到后台时,它总是调用applicationWillResignActive然后调用applicationDidEnterBackground.

我注意到的是IAP调用applicationWillResignActive然后调用applicationDidBecomeActive而没有其他内容.

所以在应用程序中: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;
Run Code Online (Sandbox Code Playgroud)

因此,这将允许您跳过IAP之类的代码(我认为SMS也以相同的方式运行).