Я пытаюсь выполнить обработку уведомлений фонового push, но у меня возникают проблемы с определением того, открыл ли пользователь приложение из push-уведомления, которое было отправлено, а не открывало его из значка.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
//************************************************************
// I only want this called if the user opened from swiping the push notification.
// Otherwise I just want to update the local model
//************************************************************
if(applicationState != UIApplicationStateActive) {
MPOOpenViewController *openVc = [[MPOOpenViewController alloc] init];
[self.navigationController pushViewController:openVc animated:NO];
} else {
///Update local model
}
completionHandler(UIBackgroundFetchResultNewData);
}
С помощью этого кода приложение открывается в MPOOpenViewController независимо от того, как пользователь открывает приложение. Как я могу сделать это так, чтобы контроллер представления был нажат только в том случае, если они открывают приложение для прокрутки уведомления?
С тем же кодом это работало на iOS 6, но с новым методом iOS 7, он не ведет себя так, как я хочу.
Изменить: Сейчас я пытаюсь запустить приложение на iOS 7, и мы не поддерживаем какую-либо версию до iOS 7. Я использовал тот же самый точный код в версии iOS 6 (без обработчика завершения), и он вел себя так, как я ожидал. Вы проведете уведомление, и это будет вызвано. Если вы открыли из значка, метод никогда не будет вызываться.