Обратный вызов application:didReceiveRemoteNotification:
должен вызываться только тогда, когда приложение работает на переднем плане. При работе в фоновом режиме вы должны вместо этого позвонить на application:didFinishLaunchingWithOptions:
.
Поскольку вы задаете вопрос, а также используете местоположение ядра, возможно, что application:didReceiveRemoteNotification:
вызывается, когда приложение находится в фоновом режиме, но я думаю, что это будет ошибкой. По крайней мере, согласно документации Apple.
В любом случае, НЕТ, вы не можете заблокировать applicationWillEnterForeground:
. Не зная точно, что вы делаете в различных обратных вызовах, я бы порекомендовал вам установить флаг в applicationWillEnterForeground:
, если вы делаете что-то там, а затем проверить этот флаг в application:didReceiveRemoteNotification:
- (void)applicationWillEnterForeground:(UIApplication *)application {
if (somehingHappend) {
somethingHappended = YES;
}
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
if (!somethingHappened) {
// push your view controllers or whatever
}
}
Где somethingHappened
- это BOOL
, определенный в том же классе, что и ивар.