Je souhaite afficher une alerte lorsque la notification locale est déclenchée, mais pour cela, je dois demander une autorisation, comme il est indiqué lors de l'exécution de l'application sur mon iPhone:
Tentative de planification d'une notification locale {date d'incendie = vendredi 13 juin 2014 12 h 10 min 27 s Heure d'été d'Europe centrale, fuseau horaire = (nul), intervalle répété = 0, nombre de répétitions = UILocalNotificationInfiniteRepeatCount, prochaine date d'incendie = vendredi 13 juin 2014 12 h 10 min 27 s Heure d'été d'Europe centrale, informations sur l'utilisateur = (null)} avec une alerte, mais n'a pas reçu l'autorisation de l'utilisateur pour afficher des alertes
Comment puis je faire ça? Voici le code actuel:
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = [[NSDate date] dateByAddingTimeInterval:timeUntilNotification];
localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.alertBody = @"ZEIT!";
localNotif.alertAction = @"Show me the Timer!";
localNotif.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] +1;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
si vous ajoutez ce code, une alerte apparaîtra pour demander à l'utilisateur l'autorisation.
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) {
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeSound|UIUserNotificationTypeBadge
categories:nil]];
}
vous pouvez ajouter ce code dans l'application: didFinishLaunchingWithOptions; méthode, de sorte que l'application demande à votre utilisateur quand il lance l'application, ou vous pouvez ajouter ce code lorsque vous définissez Notification locale, c'est à vous de décider.
La réponse de 蘇健豪 est bonne.
Dans Swift, cela ressemble à ceci:
let registerUserNotificationSettings = UIApplication.instancesRespondToSelector("registerUserNotificationSettings:")
if registerUserNotificationSettings {
var types: UIUserNotificationType = UIUserNotificationType.Alert | UIUserNotificationType.Sound
UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: types, categories: nil))
}
Voir aussi ici: Demander à l'utilisateur la permission de recevoir UILocalNotifications dans iOS 8
En langue swift ....
var type = UIUserNotificationType.Badge | UIUserNotificationType.Alert | UIUserNotificationType.Sound;
var setting = UIUserNotificationSettings(forTypes: type, categories: nil);
UIApplication.sharedApplication().registerUserNotificationSettings(setting);
UIApplication.sharedApplication().registerForRemoteNotifications();
//register notifications
if([application respondsToSelector:@selector(registerUserNotificationSettings:)]) //ios 8+
{
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
[application registerForRemoteNotifications];
}
else // ios 7 or less
{
[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge];
}
Essayez ceci pour Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSLog(@"didFinishLaunchingWithOptions");
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) {
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeSound categories:nil]];
}
return YES;
}