iOS Gérer les notifications après le démarrage de l'application de la non-exécution de l'état
J'ai essayé de gérer la réception des notifications dans mon application, mais ce n'est pas vraiment de travail.
Lorsque j'utilise didReceiveLocalNotification:(UILocalNotification *)notification
. Je peux recevoir et d'utiliser la notification qui est utilisé pour accéder à l'application, sans aucun problème
Cependant, cette fonction n'est déclenché lorsque l'application est déjà de course (actif, inactif, arrière-plan, et, éventuellement, suspendu, mais je n'ai pas essayé encore).
Maintenant, il y a cette fonction didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
où vous pouvez utiliser [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]
qui permettrait le retour d'un UILocalNotification.
Toutefois, lorsque vous lancez l'application à partir de non-exécution de état, cet événement n'est pas déclenché. Le LocalNotification puis ouvre l'application, mais je ne peux pas l'utiliser de toute façon.
Maintenant, ma question est: Comment puis-je le faire fonctionner, donc je peux recevoir et de traiter les notifications lors du démarrage de l'application, à partir d'une notification, lorsque l'application n'est pas en cours d'exécution? Est-il peut-être quelque chose que je fais mal?
Ici est un peu un exemple de code à partir de mon application:
Tout d'abord, le didFinishLaunchingWithOptions
fonction, qui, malheureusement, ne fonctionne pas. La fonction [sharedLocalNotificationsInstance processNotification:notification]
n'est jamais lancé...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
LocalNotificationsController *sharedLocalNotificationsInstance = [LocalNotificationsController sharedLocalNotificationsInstance];
[sharedLocalNotificationsInstance checkNotifications];
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if ( notification != nil ) {
//Process the received notification
[sharedLocalNotificationsInstance processNotification:notification];
application.applicationIconBadgeNumber = 0;
}
return YES;
}
Et un second morceau de code: Le didReceiveLocalNotification fonction, qui fonctionne parfaitement: je reçois la notification, et [sharedLocalNotificationsInstance processNotification:notification] fonctionne parfaitement.
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
//Used when the application launches from a notification
LocalNotificationsController *sharedLocalNotificationsInstance = [LocalNotificationsController sharedLocalNotificationsInstance];
//Process the received notification
[sharedLocalNotificationsInstance processNotification:notification];
}
OriginalL'auteur laarsk | 2012-09-05
Vous devez vous connecter pour publier un commentaire.
C'est comment iOS poignées de notification locale. Ça dépend de l'état de votre application, par exemple, active, en cours d'exécution en arrière-plan, ou n'ont pas encore commencé. L'iOS va invoquer soit didFinishLaunchingWithOptions ou didReceiveLocalNotification, ou de ne pas toucher à votre application.
Consultez cet article pour obtenir des éclaircissements - http://www.thekspace.com/home/component/content/article/62-uilocalnotification-demystified.html
Si votre application n'est pas en cours d'exécution, lors de la notification locale qui se passe et l'utilisateur active la notification, iOS permettra de démarrer votre application et de passer de l'objet de notification par le biais de la didFinishLaunchingWithOptions. Toutefois, si l'utilisateur n'a pas activé la notification, rien ne se passe.
Dans iOS7, je ne vois pas de notification d'iOS lorsque l'application est inactive. L'insigne est le jeu, mais quand on clique sur l'icône de l'application, aucune fonction n'est appelée.
Est-il moyen de gérer les Notifications Locales lorsque l'utilisateur clique sur la notification sans être Délégué? Je veux attraper un lien profond à partir d'une Notification Locale, mais sans faire de Délégué, mais je ne sais pas si c'est possible.
OriginalL'auteur K S
<Matrix-Morpheus-Meme title="WHAT IF I TOLD YOU">
Lorsqu'une application est lancée à partir de la "non-exécution" de l'état, parce qu'un utilisateur tape sur un local d'alerte de notification, l'application a été commencé par iOS, pas par Xcode, IL n'EST donc PAS en cours d'EXÉCUTION SOUS LE DÉBOGUEUR. Vous ne pouvez pas de point d'arrêt à l'intérieur et ni ne NSLog() envoyer quoi que ce soit à la console de Xcode. Test avec un
UIAlertController
.</Matrix-Morpheus-Meme>
OriginalL'auteur Gary