Como crear Notificaciones Locales en iOS 10+

Introducción

En iOS existen dos tipos de notificación Remote Notifications y Local Notifications que puedes usar para avisarle al usuario que algo importante sucede cuando no este ejecutando la aplicación. En esta guía solo hablare de Local Notifications por el momento.

Lo primero que debes entender es que las Local Notifications se controlan directamente desde el dispositivo y no interactúan con un servidor remoto como es el caso de Remote Notifications. Sin embargo para el usuario los dos tipos de notificación que te menciono al inicio tienen la misma forma visual e incluso puedes personalizarlas, pero esto es lo veremos en otra guía.

Para que tengas en mente los dos tipo de notificación están incluidos dentro del mismo framework el cual es User Notification Framework. Dicho esto iniciaremos con la implementación.

Permisos

Antes de presentar alguna notificación es necesario que el usuario autorice que nuestra aplicación pueda mostrarlas, así es que lo primero que haremos será solicitar permisos.

Primero debemos importar UserNotitifacion

import UserNotifications  

Luego solicitaremos la autorización al usuario.

Puedes definir una serie de opciones, en este caso configuraremos la posibilidad de mostrar la notificación, emitir un sonido y agregar un badge al icono de la app cuando llegue una notificación.

let center = UNUserNotificationCenter.current()  
center.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in  
  // puedes desactivar algunos features si el usuario no autorizó 
  print("granted \(granted) ")
}

con esto lo que hacemos es permitir que iOS se encargue de mostrar la alerta de solicitud de permiso.

alert request notification authorization

Configuración

Debemos realizar 3 simples pasos:

  1. Crear un content, para esto usamos UNMutableConfigurationContent. Acá podemos especificar el titulo, el mensaje y el badge (indicador de notificación que aparece en el icono de la app) entre otras cosas mas.
  2. Crear un trigger que sera el que indique el momento en el cual vamos a dispara la notificación. En este caso configuraremos la hora y el minuto en cual será disparada la notificación.
  3. Crear un request usando el content y el trigger que creamos en los pasos 1 y 2 que luego agregaremos al UNNotificacionCenter para que se encargue de controlar la notificación.
// Paso 1
let content = UNMutableNotificationContent()  
content.title = NSString.localizedUserNotificationString(forKey: "Hello", arguments: nil)  
content.body = NSString.localizedUserNotificationString(forKey: "Fire a local notification", arguments: nil)  
content.badge = 1

// Paso 2    
var dateComponents = DateComponents()  
dateComponents.hour = 11  
dateComponents.minute = 30  
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)

// Paso 3
let request = UNNotificationRequest(identifier: "Hello Notification", content: content, trigger: trigger)  

Publicación

Para que nuestra notificación pueda ser disparada debemos agregarla al UNNotificacionCenter

let center = UNUserNotificationCenter.current()  
center.add(request) { (error) in  
  print("error fire local notification \(String(describing: error))")
}

Con esto ya tienes lista tu Local Notification, te en cuenta que dada la configuración de este ejemplo la notificación solo la podrás ver, siempre y cuando tu aplicación no se encuentre en foreground.

Si te gusto o si tienes alguna sugerencia puedes dejarla en los comentarios.

Jose Aponte

Desarrollador full-stack apasionado por las tecnologías de información y los lenguajes de programación. Me gustan divertirme con mi familia, mi lema es "Nunca paras de Aprender"

Bogota

Subscribe to Jappsku Engineering Blog

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!