didReceiveRemoteNotification: fetchCompletionHandler: открыть из значка против push-уведомления
Я пытаюсь реализовать фоновую обработку 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 (без обработчика завершения), и он вел себя так, как нужно. Я ожидал бы этого. Вы бы ударили уведомление, и это будет вызвано. Если вы открываете значок, метод никогда не будет вызван.