J'ai configuré des notifications locales dans le délégué d'application en utilisant ceci:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UILocalNotification *notification = [[UILocalNotification alloc]init];
[notification setAlertBody:@"Watch the Latest Episode of CCA-TV"];
[notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:5]];
[notification setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
}
Lorsque j'exécute l'application, puis que je la quitte, je reçois une erreur disant:
2014-06-07 11: 14: 16.663 CCA-TV [735: 149070] Tentative de planification d'une notification locale {fire date = samedi 7 juin 2014 à 11:14:21 Pacific Daylight Time, time zone = America / Los_Angeles (PDT) offset -25200 (Daylight), intervalle de répétition = 0, nombre de répétitions = UILocalNotificationInfiniteRepeatCount, prochaine date d'incendie = samedi 7 juin 2014 à 11:14:21 Pacific Daylight Time, user info = (null)} avec une alerte mais n'ont pas reçu la permission de l'utilisateur d'afficher des alertes
Comment puis-je obtenir l'autorisation nécessaire pour afficher les alertes?
la source
registerUserNotificationSettings
. Si cela avait été iOS 8, ce fil aurait répondu à votre question. Mais, allez-y, jetez un œil - stackoverflow.com/questions/24006998/…Réponses:
Depuis iOS 8, vous devez demander l'autorisation de l'utilisateur pour afficher les notifications de votre application, cela s'applique à la fois aux notifications à distance / push et locales. Dans Swift, vous pouvez le faire comme ça,
Mise à jour pour Swift 2.0
Swift 3.2
La syntaxe Objective C est également très similaire.
Pour vérifier les types de notification actuellement enregistrés, vous pouvez utiliser la méthode de la classe UIApplication,
Donc, si l'utilisateur a dit non à votre application, cette fonction devrait renvoyer un paramètre sans aucun type.
J'ai écrit un tutoriel à ce sujet, vous pouvez le voir ici .
la source
dyld: Symbol not found: _OBJC_CLASS_$_UIUserNotificationSettings
. Existe-t-il un autre moyen dans Swift de demander à l'utilisateur des autorisations afin de travailler dans iOS7? veuillez aider.Mettez ce code dans le contrôleur de vue où vous programmerez d'abord les notifications (si vous les programmez au lancement, alors ce sera
application:didFinishLaunchingWithOptions:
):Dans Swift:
Les solutions qui testent par rapport au numéro de version du système sont sous-optimales et sujettes aux erreurs.
la source
application.respondsToSelector(Selector("registerUserNotificationSettings"))
etif ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
application:didFinishLaunchingWithOptions:
ce qui fournit unapplication
objet pratique :)Essayez ceci pour Objective-C:
Pour Swift:
la source
J'ai juste fait face au même problème. On dirait que dans iOS 8, nous devons faire une étape supplémentaire, généralement effectuée à l'intérieur:
Vous pouvez utiliser ce code si vous souhaitez le garder compatible avec les versions antérieures:
Le système se souviendra de la décision et ne demandera qu'une seule fois.
la source
** Notification locale avec action à trois boutons pour iOS8 +
// Bouton: JE L'AI PRIS, RAPPELER PLUS TARD, SAUTER **
la source