Notification Push -didFinishLaunchingWithOptions
Lorsque j'envoie une notification push et mon application est de l'ouvrir ou, dans le fond et que je clique sur la notification push, mon application redirige vers PushMessagesVc
viewController
(comme prévu)
J'utilise le code ci-dessous pour ceci:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
PushMessagesVc *pvc = [mainstoryboard instantiateViewControllerWithIdentifier:@"PushMessagesVc"];
[self.window.rootViewController presentViewController:pvc
animated:YES
completion:NULL];
}
Il n'y a pas de problème dans le code/scénario ci-dessus, mais si l'application est fermée et que je clique sur une notification push, l'application ne permet pas de rediriger mon PushMessagesVc
viewController
dans ce cas & l'application reste sur l'écran principal.
Pour le 2e scénario, j'utilise le code suivant:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
sleep(1);
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeNone)];
[UIApplication sharedApplication].applicationIconBadgeNumber = 1;
NSDictionary *userInfo = [launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];
if(apsInfo) {
UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
PushMessagesVc* pvc = [mainstoryboard instantiateViewControllerWithIdentifier:@"PushMessagesVc"];
[self.window.rootViewController presentViewController:pvc animated:YES completion:NULL];
return YES;
}
return YES;
}
Mais dans ce cas, le PushMessagesVc
n'apparaît pas.
Comment puis-je résoudre mon problème?
qu'est-ce que l'avertissement ou d'erreur que vous obtenez dans la console de débogage? qui
Il n'y a pas d'erreur, si la demande n'est pas ouvert, lorsque le message et j'ai cliqué sur le message de demande de rester dans la vue principale du contrôleur, car si(apsInfo) bloc ne fonctionne pas dans cette situation.
hm... au lieu de
Merci beaucoup, la réponse correcte est la réponse. Il est aujourd'hui. Je vous remercie encore.
qu'est-ce que l'avertissement ou d'erreur que vous obtenez dans la console de débogage? qui
viewController
est la première viewController
dans votre scénario? en fait... prendre une capture d'écran de la table de montage séquentiel et de l'inclure dans la réponse.Il n'y a pas d'erreur, si la demande n'est pas ouvert, lorsque le message et j'ai cliqué sur le message de demande de rester dans la vue principale du contrôleur, car si(apsInfo) bloc ne fonctionne pas dans cette situation.
hm... au lieu de
[self.window.rootViewController presentViewController:pvc animated:YES completion:NULL];
essayer cette [self.window setRootViewController:pvc]
. (recompiler, exécuté sur le périphérique... mais ne vous méprenez pas, ce n'est pas la réponse exacte à votre question, c'est juste pour vérifier si if(apsInfo)
bloc s'exécute ou pas)Merci beaucoup, la réponse correcte est la réponse. Il est aujourd'hui. Je vous remercie encore.
OriginalL'auteur cdsoft | 2013-12-25
Vous devez vous connecter pour publier un commentaire.
Puisque vous ne voulez présenter un
viewController
lorsque vous recevez une Notification Push, vous pouvez essayer en utilisantNSNotificationCenter
à vos fins:Partie 1: mettre en place une classe (dans votre cas, le
rootViewController
) pour écouter, répondre à uneNSNotification
Supposons que,
MainMenuViewController
est lerootViewController
de votrenavigationController
.Définir cette classe pour écouter un
NSNotification
:Partie 2: message de Notification (possible de n'importe où dans votre code)
Dans votre cas, AppDelegate.m méthodes devrait ressembler à:
PS: je n'ai pas fait cela pour mes projets (encore) mais ça marche et c'est le mieux que j'ai pu penser à faire ce genre de trucs (pour le moment)
barre d'en-tête? vous voulez la
navBar
? hm... nous sommes à l'aide de votre-presentViewController:animated:completion:
méthode donc, au lieu de les présenter, nous pouvons pousser, alors... essayez[self.navigationController pushViewController:pvc animated:YES];
||| Et comme pourif the application is not working, whe message arrive application is closed outomatically
... comment l'application se ferme automatiquement si elle n'est pas de travail?si j'ajoute en dessous de la ligne, l'application est fermée [auto performSelector:@selector(onLoadPushNotification) withObject:néant afterDelay:1];
oh, c'est s'écraser... le nom de la méthode
onLoadPushNotification
est incorrect (mon erreur), il devrait êtrepostNotificationToPresentPushMessagesVC
. Je vais mettre à jour la réponseVraiment génial. Il résout mon problème rapidement après une longue tentative.
OriginalL'auteur staticVoidMan
Swift 2.0
Pour "Pas de Course" État (Local & Notification à Distance)
}
OriginalL'auteur Vladimir Vozniak
Swift 3
Pour obtenir de notification push Dictionnaire didFinishLaunchingWithOptions lors de l'application est de tuer et de notification push de recevoir et de clic de l'utilisateur sur que
De notification Push Dictionnaire affichera en alerte.
OriginalL'auteur Hardik Thakkar
Swift version:
OriginalL'auteur Roman Barzyczak