permission objective notification example ios uilocalnotification

objective - UILocalNotification está en desuso en iOS10



swift local notification (3)

Apple lo ha vuelto a hacer, la implementación correcta es: AppDelegate.swift

if #available(iOS 10.0, *) { let center = UNUserNotificationCenter.currentNotificationCenter() center.requestAuthorizationWithOptions([.Alert, .Sound]) { (granted, error) in // Enable or disable features based on authorization. } } else { // Fallback on earlier versions }

y no te olvides de agregar

import UserNotifications

Puede ser una pregunta por adelantado, pero me pregunto qué usar en lugar de UILocalNotification en iOS10. Actualmente estoy trabajando en una aplicación que tiene un destino de despliegue iOS8, entonces ¿estará bien usar UILocalNotification ?



Sí, puede usar UILocalNotification , las API antiguas también funcionan bien con iOS10, pero en su lugar deberíamos utilizar las API en el marco de Notificaciones de usuario. También hay algunas características nuevas, solo se puede usar con el marco de notificaciones de usuario iOS10.

Esto también sucede con la Notificación remota, para obtener más información: Here .

Nuevas características:

  1. Ahora puede presentar alerta, sonido o aumentar la insignia mientras la aplicación está en primer plano también con iOS 10.
  2. Ahora puedes manejar todos los eventos en un solo lugar cuando el usuario toca (o desliza) el botón de acción, incluso mientras la aplicación ya ha sido eliminada.
  3. Soporte 3D táctil en lugar de deslizar gesto.
  4. Ahora puede eliminar notificaciones locales específicas solo por un código de fila.
  5. Admite notificaciones enriquecidas con interfaz de usuario personalizada.

Es muy fácil para nosotros convertir UILocalNotification API UILocalNotification API del marco de notificaciones de usuario iOS10, son muy similares.

Escribo una demostración aquí para mostrar cómo usar API nuevas y antiguas al mismo tiempo: iOS10AdaptationTips .

Por ejemplo,

Con la implementación de Swift:

  1. importar UserNotifications

    /// Notification become independent from UIKit import UserNotifications

  2. solicitar autorización para la notificación local

    let center = UNUserNotificationCenter.current() center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in // Enable or disable features based on authorization. }

  3. programar localNotification

  4. actualizar el número de la insignia del icono de la aplicación

    @IBAction func triggerNotification(){ let content = UNMutableNotificationContent() content.title = NSString.localizedUserNotificationString(forKey: "Elon said:", arguments: nil) content.body = NSString.localizedUserNotificationString(forKey: "Hello Tom!Get up, let''s play with Jerry!", arguments: nil) content.sound = UNNotificationSound.default() content.badge = UIApplication.shared().applicationIconBadgeNumber + 1; content.categoryIdentifier = "com.elonchan.localNotification" // Deliver the notification in five seconds. let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 60.0, repeats: true) let request = UNNotificationRequest.init(identifier: "FiveSecond", content: content, trigger: trigger) // Schedule the notification. let center = UNUserNotificationCenter.current() center.add(request) } @IBAction func stopNotification(_ sender: AnyObject) { let center = UNUserNotificationCenter.current() center.removeAllPendingNotificationRequests() // or you can remove specifical notification: // center.removePendingNotificationRequests(withIdentifiers: ["FiveSecond"]) }

Implementación de Objective-C:

  1. importar UserNotifications

    // Notifications are independent from UIKit #import <UserNotifications/UserNotifications.h>

  2. solicitar autorización para la notificación local

    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) { if (!error) { NSLog(@"request authorization succeeded!"); [self showAlert]; } }];

  3. programar localNotification

  4. actualizar el número de la insignia del icono de la aplicación

    UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init]; content.title = [NSString localizedUserNotificationStringForKey:@"Elon said:" arguments:nil]; content.body = [NSString localizedUserNotificationStringForKey:@"Hello Tom!Get up, let''s play with Jerry!" arguments:nil]; content.sound = [UNNotificationSound defaultSound]; // 4. update application icon badge number content.badge = [NSNumber numberWithInteger:([UIApplication sharedApplication].applicationIconBadgeNumber + 1)]; // Deliver the notification in five seconds. UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:5.f repeats:NO]; UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"FiveSecond" content:content trigger:trigger]; /// 3. schedule localNotification UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) { if (!error) { NSLog(@"add NotificationRequest succeeded!"); } }];

Vaya a aquí para obtener más información: iOS10AdaptationTips .

actualizado

Aplicación de terminación debido a la excepción no detectada ''NSInternalInconsistencyException'', razón: ''intervalo de tiempo debe ser de al menos 60 si se repite''

let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 60, repeats: true)