iphone - 如何知道 StoreKit In App Purchases 导致了 applicationWillResignActive?

标签 iphone objective-c ios cocoa-touch ios4

当您提交应用程序内购买时,它会在询问您是否要购买时引发 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/

相关文章:

iphone - 当用户给出终点和起点的经纬度时,如何获得该区域的业务?

ios - 使用UIActivityViewController发送音频

ios - EKEvent 的旅行时间

ios - iPhone : Is it possible to close the app rather than run in background when user clicks Home Button?

ios - WebView 与触摸事件 UITapGestureRecognizer 无法识别的选择器

ios - FBSDKLikeControl 变灰/禁用

iphone - Xcode 运行时错误

ios - 如果生成报告后测试失败,如何让 jenkins 使构建失败?

iphone - 两个同名的 AppStore 帐户。我收到 codeSign 错误 'Name' 在钥匙串(keychain)中出现多次

iphone - 更快的 if 语句