didReceiveRemoteNotification: fetchCompletionHandler: aberto a partir do ícone vs notificação por push
Estou tentando implementar o tratamento de notificações por push em segundo plano, mas estou tendo problemas para determinar se o usuário abriu o aplicativo a partir da notificação por push enviada, em vez de abri-lo no ícone.
- (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);
}
Com esse código, o aplicativo está abrindo para o MPOOpenViewController, independentemente de como o usuário abre o aplicativo. Como posso fazer com que o controlador de exibição seja pressionado apenas se eles abrirem o aplicativo passando a notificação?
Com o mesmo código, isso funcionou no iOS 6, mas com o novo método do iOS 7, ele não se comporta como eu quero.
Editar: Agora estou tentando executar o aplicativo no iOS 7 e não oferecemos suporte a nenhuma versão anterior ao iOS 7. Usei esse mesmo código exato na versão do método para iOS 6 (sem o manipulador de conclusão) e ele se comportou da maneira que Eu esperaria. Você passaria a notificação e isso seria chamado. Se você abrir a partir do ícone, o método nunca será chamado.