Хорошо, это то, что я собираюсь сделать, так как я не могу придумать другой способ сделать это ...
Когда приложение запускается заново, оно вызывает application: didFinishLaunchingWithOptions, а когда оно запускается из фона, оно вызывает applicationWillEnterForeground. В обоих этих случаях он всегда вызывает applicationDidBecomeActive, где у меня есть код, который я хочу пропустить, когда происходит IAP.
Когда приложение закрывается или перемещается в фоновый режим, оно всегда вызывает applicationWillResignActive, а затем applicationDidEnterBackground.
Я заметил, что IAP вызывает applicationWillResignActive, а затем applicationDidBecomeActive и ничего больше.
Итак, в приложении: didFinishLaunchingWithOptions я установлю переменную startupDidFinish = 1
А в applicationWillEnterForeground я установлю переменную startupForeground = 1
В приложении DidBecomeActive я сделаю это:
//SKIP if application resigned active then becomes active again.
if (startupDidFinish == 1 || startupForeground==1) {
//Do normal startup stuff
}
startupDidFinish = 0;
startupForeground = 0;
Так что это позволит вам пропустить код для таких вещей, как IAP (и я думаю, что SMS также действует так же).