A los desarrolladores de iOS les encanta imaginar a las personas usando su increíble aplicación constantemente. Pero, por supuesto, los usuarios a veces tendrán que cerrar la aplicación y realizar otras actividades. ¡La ropa no se dobla sola, sabes! Afortunadamente, las notificaciones push permiten a los desarrolladores llegar a los usuarios y realizar pequeñas tareas, incluso cuando los usuarios no están utilizando activamente una aplicación. En este tutorial, aprenderás a:
- Configurar tu aplicación para recibir notificaciones push.
- Visualícelos a sus usuarios o realice otras tareas.
introducción
¿Qué son las notificaciones push? Son mensajes enviados a tu app a través del servicio de notificaciones Push de Apple (APNs), incluso si tu app no se está ejecutando o el teléfono está en reposo. ¿Para qué puedes usar las notificaciones push?
- Muestra un mensaje de texto corto, llamado alerta, que llama la atención sobre algo nuevo en tu app.
- Reproducir un sonido de notificación.
- Establezca un número de insignia en el icono de la aplicación para que el usuario sepa que hay nuevos elementos.
- Proporcionar acciones que el usuario puede realizar sin abrir la aplicación.
- Mostrar un archivo adjunto de medios.
- Estar en silencio, lo que permite que la aplicación realice una tarea en segundo plano.
- Agrupar notificaciones en hilos.
- Editar o eliminar notificaciones entregadas.
- Ejecute el código para cambiar la notificación antes de mostrarla.
- Muestra una interfaz de usuario personalizada e interactiva para tu notificación.
- Y probablemente más.
Este tutorial cubre muchos de estos usos para ayudarlo a comenzar a crear notificaciones push en sus aplicaciones. Para completar este tutorial, necesitarás lo siguiente:
- Xcode 11.4 o posterior. Las versiones anteriores de Xcode no admiten notificaciones push con el simulador.
- Una membresía al Programa de Desarrolladores de Apple para poder compilar la aplicación con el derecho de Notificaciones Push.
Para enviar y recibir notificaciones push, debe realizar tres tareas principales:
- Configure su aplicación y regístrela con el APNs.
- Enviar una notificación push desde un servidor a dispositivos específicos a través de APN. Simularás eso con Xcode.
- Use devoluciones de llamada en la aplicación para recibir y gestionar notificaciones push.
El envío de notificaciones push es responsabilidad del componente de servidor de tu aplicación. Muchas aplicaciones utilizan terceros para enviar notificaciones push. Otros utilizan soluciones personalizadas o bibliotecas populares (como Houston). Solo tocarás el envío de mensajes push en este tutorial, así que asegúrate de consultar a Dónde ir desde aquí. sección para aprovechar su conocimiento de las notificaciones push.
Para comenzar, descargue el proyecto de inicio de WenderCast utilizando el botón Descargar materiales en la parte superior o inferior de este tutorial. WenderCast es la fuente de referencia para todo el mundo raywenderlich.com podcasts y noticias de última hora.
En la carpeta de inicio, abra WenderCast.xcodeproj. Seleccione WenderCast en el Navegador de proyectos y, a continuación, seleccione el destino WenderCast. En la pestaña Capacidades General &, seleccione su equipo de desarrollo. Construye y ejecuta en un simulador.
WenderCast muestra una lista de raywenderlich.com podcasts y permite a los usuarios reproducirlos. Pero no permite que los usuarios sepan cuando un nuevo podcast está disponible y la pestaña de Noticias está vacía. Pronto solucionarás estos problemas con el poder de las notificaciones push.
Enviar y recibir notificaciones Push
Configurar la aplicación
La seguridad es muy importante para las notificaciones push. No quieres que nadie más envíe notificaciones push a tus usuarios a través de tu aplicación. Tendrás que realizar varias tareas para configurar tu aplicación para recibir notificaciones push de forma segura.
Habilitar el Servicio de notificaciones push
Primero, debe cambiar el identificador del paquete. En Xcode, resalte WenderCast en el Navegador de proyectos y, a continuación, seleccione el destino WenderCast. Selecciona General y, a continuación, cambia el Identificador de paquete a algo único para que el servidor de notificaciones push de Apple pueda dirigir las notificaciones push a esta aplicación.
A continuación, debe crear un ID de aplicación en su cuenta de desarrollador y habilitar el derecho de notificación push. Xcode tiene una forma sencilla de hacer esto: Con el destino WenderCast aún seleccionado, haga clic en la pestaña Capacidades de firma & y luego haga clic en el botón Capacidad+. Escriba «push» en el campo de filtro y presione Entrar.
Después de agregar el derecho de notificaciones push, su proyecto debería tener este aspecto:
Entre bastidores, esto crea el ID de la aplicación y, a continuación, le agrega el derecho a las notificaciones push. Puede iniciar sesión en el Centro de Desarrolladores de Apple para verificar esto:
Eso es todo lo que necesita configurar por ahora. Ya está listo para comenzar a mejorar la aplicación.
Solicitar permiso de notificaciones de usuario
Hay dos pasos que debes seguir para registrarte para recibir notificaciones push. En primer lugar, debe obtener el permiso del usuario para mostrar notificaciones. A continuación, puede registrar el dispositivo para recibir notificaciones remotas (push). Si todo va bien, el sistema le proporcionará un token de dispositivo, que puede considerar como una «dirección» de este dispositivo.
En WenderCast, te registrarás para recibir notificaciones push inmediatamente después de que se inicie la aplicación. Primero pide permisos de usuario.
Abre AppDelegate.swift y agregue lo siguiente a la parte superior del archivo:
import UserNotifications
A continuación, agregue el siguiente método al final de AppDelegate
:
func registerForPushNotifications() { //1 UNUserNotificationCenter.current() //2 .requestAuthorization(options: ) { granted, _ in //3 print("Permission granted: \(granted)") }}
Lo que hace este código:
-
UNUserNotificationCenter
maneja todas las actividades relacionadas con las notificaciones en la aplicación, incluidas las notificaciones push. - Invoca
requestAuthorization(options:completionHandler:)
para (lo ha adivinado) solicitar autorización para mostrar notificaciones. Eloptions
aprobado indica los tipos de notificaciones que desea que use su aplicación; aquí solicita alerta, sonido y insignia. - El controlador de finalización recibe un Bool que indica si la autorización se ha realizado correctamente. En este caso, simplemente imprime el resultado.
requestAuthorization(options:completionHandler:)
puede incluir cualquier combinación de UNAuthorizationOptions
:
- .insignia: Muestra un número en la esquina del icono de la aplicación.
- .sonido: Reproduce un sonido.
- .alerta: Muestra una notificación de texto.
- .carPlay: Muestra notificaciones en CarPlay.
- .provisional: Publicar notificaciones sin interrupciones. El usuario no recibirá una solicitud de permiso si solo utiliza esta opción, pero sus notificaciones solo se mostrarán silenciosamente en el Centro de notificaciones.
- .providesAppNotificationSettings: Indica que la aplicación tiene su propia interfaz de usuario para la configuración de notificaciones.
- .criticalAlert: Ignore el interruptor de silencio y No moleste. Necesitará un derecho especial de Apple para usar esta opción, porque está destinada solo para casos de uso muy especiales.
Agregue lo siguiente cerca del final de application(_:didFinishLaunchingWithOptions:)
, justo antes de return
:
registerForPushNotifications()
Llamar a registerForPushNotifications()
aquí garantiza que la aplicación intentará registrarse para recibir notificaciones push cada vez que se inicie.
Compilar y ejecutar. Cuando se inicie la aplicación, deberías recibir un mensaje que te pida permiso para enviarte notificaciones.
Pulse Permitir y ¡puf! La aplicación ahora puede mostrar notificaciones. ¡Órale! Pero, ¿qué pasa si el usuario rechaza los permisos? Agregue este método dentro de AppDelegate
:
func getNotificationSettings() { UNUserNotificationCenter.current().getNotificationSettings { settings in print("Notification settings: \(settings)") }}
Primero, especificó la configuración que desea. Este método devuelve la configuración que el usuario ha concedido. Por ahora, las están imprimiendo, pero volverán aquí en breve para hacer más con esto.
En registerForPushNotifications()
, reemplace la llamada a requestAuthorization(options:completionHandler:)
por lo siguiente:
UNUserNotificationCenter.current() .requestAuthorization( options: ) { granted, _ in print("Permission granted: \(granted)") guard granted else { return } self?.getNotificationSettings() }
Ha agregado una llamada a getNotificationSettings()
en el controlador de finalización. Esto es importante porque el usuario puede, en cualquier momento, entrar en la aplicación de Configuración y cambiar sus permisos de notificación. El guard
evita hacer esta llamada en casos en los que no se concedió el permiso.
Registrarse con APNs
¡Ahora que tiene permisos, se registrará para recibir notificaciones remotas!
En getNotificationSettings()
, agregue lo siguiente debajo de print
dentro del cierre:
guard settings.authorizationStatus == .authorized else { return }DispatchQueue.main.async { UIApplication.shared.registerForRemoteNotifications()}
Aquí, verifique que authorizationStatus
es .authorized
: El usuario ha concedido permisos de notificación. Si es así, llama a UIApplication.shared.registerForRemoteNotifications()
para iniciar el registro con el servicio de notificaciones Push de Apple. Necesitas llamar a esto en el hilo principal, o recibirás una advertencia de tiempo de ejecución.
Agregue lo siguiente al final de AppDelegate
:
func application( _ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) } let token = tokenParts.joined() print("Device Token: \(token)")}
Este método es llamado por iOS siempre una llamada a registerForRemoteNotifications()
tiene éxito. El código puede parecer críptico, pero simplemente toma un deviceToken
recibido y lo convierte en una cadena. El token del dispositivo es el fruto de este proceso. Es proporcionado por APNs e identifica de forma única esta aplicación en este dispositivo en particular.
Al enviar una notificación push, el servidor utiliza tokens como «direcciones» para entregar a los dispositivos correctos. En su aplicación, ahora enviaría este token a su servidor para guardarlo y usarlo más adelante para enviar notificaciones.
Ahora, agregue el siguiente:
func application( _ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { print("Failed to register: \(error)")}
Este método es llamado por iOS si registerForRemoteNotifications()
falla. Estás imprimiendo el error por ahora.
Eso es todo! Construir y correr. Debido a que está en un simulador, verá un error Failed to register
. Puedes ignorarlo por ahora. Más tarde, cuando se ejecuta en un dispositivo real, debe recibir un token en la salida de la consola. Este es un ejemplo:
Enviar una notificación Push simulada
Utilice un editor de texto para crear un archivo llamado primero.apn, que pasará a la utilidad simctl de Xcode. Pegue el siguiente texto JSON y guarde el archivo.
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
La estructura de este JSON se explicará en la siguiente sección. Paciencia, saltamontes.
Compile y ejecute de nuevo la aplicación en el simulador, luego en segundo plano la aplicación o bloquee el dispositivo. La aplicación aún no puede procesar notificaciones push mientras está en primer plano.
Para usar simctl, deberá conocer el identificador del dispositivo para el simulador en el que está ejecutando la aplicación. Si solo hay un dispositivo en ejecución en el simulador, puede utilizar el identificador de arranque en lugar de un identificador. Para obtener el identificador, en Xcode, seleccione Windows ▸ Dispositivos y Simuladores, luego seleccione la pestaña Simuladores en la parte superior y seleccione el simulador que está utilizando de la lista de la izquierda. Utilice el ratón para copiar el identificador. Es posible que necesite ampliar el cuadro de diálogo para verlo completamente.
Abra la aplicación de terminal y cambie al directorio donde guardó primero.APN. A continuación, escriba el siguiente comando utilizando el identificador de dispositivo arrancado o el identificador de dispositivo desde Xcode en lugar de device_identifier: xcrun simctl push device_identifier bundle_identifier first.apn
. Reemplace device_identifier
con el identificador de dispositivo que copió de Xcode y reemplace bundle_identifier
con el identificador de paquete de la aplicación, el que usó cuando configuró el proyecto por primera vez. Este es un ejemplo:
Ejecute el comando y verá que la notificación push aparece en el simulador.
Pulse en la notificación para iniciar la aplicación.
¿No es genial? :]
Mirando una notificación Push básica
Antes de pasar a manejar las notificaciones push, eche un vistazo al cuerpo de la notificación que ha enviado:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
La carga útil es un diccionario JSON que contiene al menos un elemento, aps, que también es un diccionario. En este ejemplo, aps
contiene los campos alert
sound
y link_url
. Cuando el dispositivo recibe esta notificación push, muestra una vista de alerta con el texto » ¡Noticias de última hora!»y reproduce el efecto de sonido estándar.
link_url
es en realidad un campo personalizado. Puede agregar campos personalizados a la carga útil de esta manera, y se entregarán a su aplicación. Debido a que aún no lo está manejando dentro de la aplicación, este par clave/valor actualmente no hace nada.Corrección
link_url
debería estar a nivel de pares en la entrada del diccionario aps
en lugar de dentro de él. Todavía funciona si lo colocas dentro, pero siempre sugerimos que te adhieras a la documentación de Apple y corregiremos esto en nuestra próxima actualización de este tutorial. Hay ocho claves integradas que puede agregar al diccionario aps
(consulte la Referencia de clave de carga útil oficial para obtener más información):
- alerta: Puede ser una cadena, como en el ejemplo anterior, o un diccionario. Como diccionario, puede localizar el texto o cambiar otros aspectos de la notificación.insignia
- : Este es un número que se mostrará en la esquina del icono de la aplicación. Puede eliminar la insignia configurándola en 0.
- sonido: Nombre del archivo de sonido de notificación personalizado ubicado en la aplicación. Estos deben ser inferiores a 30 segundos.
- id de hilo: Utilice esta clave para agrupar notificaciones.
- categoría: define la categoría de la notificación, que se utiliza para mostrar acciones personalizadas en la notificación. Explorarás esto en breve.
- contenido disponible: Al establecer esta tecla en
1
, la notificación push se vuelve silenciosa. Aprenderás sobre esto en la sección de Notificaciones Push silenciosas a continuación. - contenido mutable: Al establecer esta clave en
1
, tu aplicación puede modificar la notificación antes de mostrarla. - id de contenido de destino: Este es el identificador de la ventana adelantada.
Fuera de estos, puede agregar tantos datos personalizados como desee, siempre que la carga útil no exceda los 4096 bytes.
Una vez que te hayas divertido lo suficiente probando estas opciones y enviando notificaciones push a tu simulador, ¡pasa a la siguiente sección!
Manejo de notificaciones push
En esta sección, aprenderás a realizar acciones cuando tu app reciba notificaciones y cuando los usuarios las toquen.
Comprender Qué sucede Cuando recibe una notificación Push
Cuando su aplicación recibe una notificación push, iOS llama a un método en UIApplicationDelegate
.
Tendrá que manejar una notificación de forma diferente dependiendo del estado en el que se encuentre su aplicación cuando se reciba la notificación:
- Si su aplicación no se estaba ejecutando y el usuario la inicia tocando la notificación push, iOS pasa la notificación a su aplicación en el
launchOptions
deapplication(_:didFinishLaunchingWithOptions:)
. - Si la aplicación se ejecutaba en primer plano o en segundo plano, el sistema notifica a la aplicación llamando a
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
. Cuando el usuario abre la aplicación tocando la notificación push, iOS puede volver a llamar a este método, para que puedas actualizar la interfaz de usuario y mostrar información relevante.
En el primer caso, WenderCast creará la noticia y se abrirá directamente en la pestaña Noticias. En AppDelegate.swift, agregue el siguiente código al final de application(_:didFinishLaunchingWithOptions:)
, justo antes de la instrucción return:
// Check if launched from notificationlet notificationOption = launchOptions?// 1if let notification = notificationOption as? , let aps = notification as? { // 2 NewsItem.makeNewsItem(aps) // 3 (window?.rootViewController as? UITabBarController)?.selectedIndex = 1}
Esto es lo que está haciendo:
- Compruebe si el valor de
UIApplication.LaunchOptionsKey.remoteNotification
existe enlaunchOptions
. Si lo hace, la aplicación se lanzó desde una notificación. Esto contendrá la carga útil de notificación push que envió. - Dado que el diccionario
aps
existe, cree unNewsItem
con él. - Cambie la pestaña seleccionada del controlador de pestañas a la sección de noticias.
Para probar esto, debe editar el esquema de WenderCast. Primero, compile y ejecute para instalar el código más reciente en el simulador. A continuación, haga clic en el esquema de WenderCast y seleccione Editar esquema…:
Seleccione Ejecutar desde la barra lateral, luego en la pestaña Información seleccione Esperar a que se inicie el ejecutable:
Esta opción hará que el depurador espere a que se inicie la aplicación por primera vez después de instalar para unirte a él.
Compilar y ejecutar. Una vez que haya terminado de instalar, envíe más noticias de última hora usando xcrun simctl
como antes. Toca la notificación y la aplicación se abrirá para recibir noticias:
Para manejar la situación en la que su aplicación se está ejecutando cuando se recibe una notificación push, agregue lo siguiente a AppDelegate
:
func application( _ application: UIApplication, didReceiveRemoteNotification userInfo: , fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { guard let aps = userInfo as? else { completionHandler(.failed) return } NewsItem.makeNewsItem(aps)}
Esto intenta extraer los puntos de acceso de lauserInfo
objeto y, si tiene éxito, crea un nuevoNewsItem
a partir de él.
Dado que iOS llama a este método cuando la aplicación se está ejecutando, debe cambiar el esquema para volver a iniciar la aplicación automáticamente para probarlo. En el editor de esquemas, en Iniciar, seleccione Automáticamente.
Compilar y ejecutar. Mantenga la aplicación ejecutándose en primer plano y en la pestaña Noticias. Enviar otra notificación push de noticias y ver como aparece en el feed:
¡Eso es todo! Tu aplicación ahora puede recibir mágicamente noticias de última hora a medida que sucede. :]
Trabajar con notificaciones procesables
Las notificaciones procesables le permiten agregar botones personalizados a la notificación en sí. Es posible que hayas notado esto en notificaciones por correo electrónico o Tweets que te permiten «responder» o «favorito» en el acto.
Tu app puede definir notificaciones procesables cuando te registras para recibir notificaciones mediante categorías. Cada categoría de notificación puede tener algunas acciones personalizadas predefinidas.
Una vez registrado, el servidor puede establecer la categoría de una notificación push. Las acciones correspondientes estarán disponibles para el usuario cuando se reciban.
Para WenderCast, definirá una categoría de noticias con una acción personalizada llamada View. Esta acción permitirá a los usuarios ver el artículo de noticias en la aplicación si así lo desean.
En registerForPushNotifications()
, inserte lo siguiente justo debajo del protector y encima de la llamada a getNotificationSettings()
:
// 1let viewAction = UNNotificationAction( identifier: Identifiers.viewAction, title: "View", options: )// 2let newsCategory = UNNotificationCategory( identifier: Identifiers.newsCategory, actions: , intentIdentifiers: , options: )// 3UNUserNotificationCenter.current().setNotificationCategories()
Pasando por esto, paso a paso:
- Crea una nueva acción de notificación, con la vista de título en el botón, que abre la aplicación en primer plano cuando se activa. La acción tiene un identificador distinto, que iOS utiliza para diferenciar entre otras acciones en la misma notificación.
- Defina la categoría de noticias, que contendrá la acción view. También tiene un identificador distinto que la carga útil deberá contener para especificar que la notificación push pertenece a esta categoría.
- Registre la nueva notificación procesable llamando a
setNotificationCategories
.
Crea y ejecuta la aplicación para registrar la nueva configuración de notificaciones.
En segundo plano de la aplicación y luego envíe la siguiente carga útil a través de la utilidad xcrun simctl
:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}
Cuando aparezca la notificación, desplácese hacia abajo para revelar la acción de vista:
¡Bonito! Al tocar la vista, se lanzará WenderCast, pero todavía no hace nada emocionante. Para que se muestre la noticia, necesita hacer más manejo de eventos en el delegado.
Gestionar acciones de notificación
Cada vez que se activa una acción de notificación, UNUserNotificationCenter
informa a su delegado. De vuelta en AppDelegate.swift, agregue la siguiente extensión de clase al final del archivo:
// MARK: - UNUserNotificationCenterDelegateextension AppDelegate: UNUserNotificationCenterDelegate { func userNotificationCenter( _ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void ) { // 1 let userInfo = response.notification.request.content.userInfo // 2 if let aps = userInfo as? , let newsItem = NewsItem.makeNewsItem(aps) { (window?.rootViewController as? UITabBarController)?.selectedIndex = 1 // 3 if response.actionIdentifier == Identifiers.viewAction, let url = URL(string: newsItem.link) { let safari = SFSafariViewController(url: url) window?.rootViewController? .present(safari, animated: true, completion: nil) } } // 4 completionHandler() }}
Esta es la devolución de llamada que obtiene cuando se abre la aplicación debido a una acción personalizada. Puede parecer que están pasando muchas cosas, pero no hay mucho nuevo aquí:
- Obtenga el diccionario
userInfo
. - Cree un
NewsItem
desde el diccionarioaps
y vaya a la pestaña Noticias. - Compruebe el
actionIdentifier
. Si es la acción «View» y el enlace es una URL válida, muestra el enlace en unSFSafariViewController
. - Llama al controlador de finalización que el sistema te pasa.
Hay un último bit: Debe establecer el delegado en UNUserNotificationCenter
. Añadir esta línea a la parte superior de application(_:didFinishLaunchingWithOptions:)
:
UNUserNotificationCenter.current().delegate = self
Compilar y ejecutar. Cierre la aplicación de nuevo, luego envíe otra notificación de noticias con la siguiente carga útil:
{ "aps": { "alert": "New Posts!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}
Tire hacia abajo la notificación y toque la acción Ver, y verá que WenderCast presenta un controlador de vista de Safari justo después de que se inicie:
Felicitaciones, ¡ha implementado una notificación procesable! Envía algunos más e intenta abrir la notificación de diferentes maneras para ver cómo se comporta.
Enviar a un dispositivo real
Si no quieres enviar notificaciones push a un dispositivo real o aún no necesitas notificaciones push silenciosas, puedes omitir esta sección e ir a Dónde ir Desde Aquí.
Sin embargo, si quieres hacerte una idea de cómo enviar notificaciones push a un dispositivo real y probar el push silencioso, debes realizar una configuración adicional. Descargue la utilidad PushNotifications. Usarás esta aplicación de utilidad para enviar notificaciones a un dispositivo real. Para instalarlo, siga las instrucciones en Cómo instalarlo. Preste especial atención a cómo abrir la aplicación, ya que tendrá que cambiar algunas configuraciones para ejecutar esta utilidad.
Dirígete al Centro de Miembros de Desarrolladores de Apple e inicia sesión.
El envío de notificaciones push requiere una Clave de autenticación. En el centro de miembros, seleccione Certificados, Identificadores & Perfiles y, a continuación, busque las teclas en el panel izquierdo. A la derecha del título de las teclas hay un botón+. Haga clic en él para crear una nueva clave.
Asigne un nombre a la clave, como Clave de notificación Push. En Servicios clave, selecciona Servicio de notificaciones Push de Apple (APNs).
Haga clic en Continuar y, a continuación, Regístrese en la siguiente pantalla para crear su nueva clave. Toca Descargar. El archivo descargado tendrá un nombre similar a AuthKey_4SVKWF966R. p8. Mantenga un registro de este archivo, ¡lo necesitará para enviar sus notificaciones! La parte 4SVKWF966R del nombre de archivo es el ID de clave. También necesitarás esto.
La pieza final que necesitas es el ID de tu equipo. Vaya a la página de Detalles de membresía del centro de miembros para encontrarla.
¡Lo hiciste! Con su nueva clave, ahora está listo para enviar su primera notificación push. Sólo necesitas una cosa más.
Ejecute la aplicación en su dispositivo real, copie el token del dispositivo de la consola del depurador y téngalo listo.
Inicie notificaciones push y complete los siguientes pasos:
- En Autenticación, seleccione Token.
- Haga clic en el botón Seleccionar P8 y seleccione el .archivo p8 de la sección anterior.
- Introduzca su ID de clave y el ID de equipo en los campos pertinentes.
- En el cuerpo, ingresa el ID de paquete de tu aplicación y el token de tu dispositivo.
- Cambie el cuerpo de la solicitud para que se vea así:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
Haga clic en el botón Enviar en Notificaciones automáticas.
Debe recibir su notificación push:
Solución de problemas comunes
Aquí hay un par de problemas que puede encontrar:
- Algunas notificaciones llegan, pero no todas: Si estás enviando muchas notificaciones push simultáneamente, pero solo recibes unas pocas, ¡no temas! Eso es por diseño. APNs mantiene una cola de QoS (Calidad de servicio) para cada dispositivo. El tamaño de esta cola es 1, por lo que si envía varias notificaciones, la última notificación se anula.
- Problema al conectarse al Servicio de Notificaciones Push: Una posibilidad podría ser que haya un firewall bloqueando los puertos utilizados por los APN. Asegúrate de desbloquear estos puertos.
El uso de notificaciones push silenciosas
Las notificaciones push silenciosas pueden activar la aplicación en silencio para realizar algunas tareas en segundo plano. WenderCast puede usar esta función para actualizar silenciosamente la lista de podcasts.
Con un componente de servidor adecuado, esto puede ser muy eficiente. Tu app no tendrá que buscar datos constantemente. Puede enviarle una notificación push silenciosa siempre que haya nuevos datos disponibles.
Para comenzar, seleccione de nuevo el destino WenderCast. Ahora haga clic en la pestaña Capacidades de firma & y agregue la capacidad de Modos de fondo. A continuación, marque la opción Notificaciones remotas:
Ahora, su aplicación se despertará en segundo plano cuando reciba una de estas notificaciones push.
En AppDelegate.swift, encuentra application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
. Sustituir la llamada a NewsItem.makeNewsItem()
con el siguiente:
// 1if aps as? Int == 1 { let podcastStore = PodcastStore.sharedStore // 2 podcastStore.refreshItems { didLoadNewItems in // 3 completionHandler(didLoadNewItems ? .newData : .noData) }} else { // 4 NewsItem.makeNewsItem(aps) completionHandler(.newData)}
Ir a través del código:
- verifique para ver si
content-available
está configurado para 1. Si es así, se trata de una notificación silenciosa. - Actualiza la lista de podcast, que es una llamada de red asincrónica.
- Cuando se complete la actualización, llame al controlador de finalización para que el sistema sepa si la aplicación cargó algún dato nuevo.
- Si no es una notificación silenciosa, entonces es una noticia, así que crea una noticia.
Asegúrese de llamar al controlador de finalización con el resultado honesto. El sistema mide el consumo de batería y el tiempo que usa la aplicación en segundo plano y puede acelerarla si es necesario.
Eso es todo lo que hay que hacer. Para probarlo, compilarlo y ejecutarlo, ponga en primer plano la aplicación y empuje la siguiente carga útil a través de la utilidad PushNotifications:
{ "aps": { "content-available": 1 }}
Si todo va bien, no debería pasar nada, a menos que se haya agregado un nuevo podcast a la base de datos remota. Para confirmar que el código se ejecutó como se esperaba, establezca un punto de interrupción en application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
y avance a través de él después de que se envíe la notificación.
¿A Dónde Ir Desde Aquí?
¡Felicitaciones! ¡Has completado este tutorial y has hecho de WenderCast una aplicación con todas las funciones con notificaciones push!
Puede descargar el proyecto completado utilizando el botón Descargar materiales en la parte superior o inferior de este tutorial.
¿Quieres profundizar en todo lo que puedes hacer con las notificaciones push, como crear IU personalizadas y enviar alertas críticas? Nuestro libro de tutoriales de Notificaciones Push te enseñará las funciones avanzadas de las notificaciones push.
Otro recurso es el Tutorial de Notificaciones Push para iOS: Tutorial de Notificaciones Push enriquecidas.
Aunque las notificaciones push son una parte importante de las aplicaciones modernas, también es muy común que los usuarios rechacen los permisos de tu aplicación si te excedes en las notificaciones. Pero con un diseño bien pensado, las notificaciones push pueden hacer que los usuarios vuelvan a su aplicación una y otra vez.
¡Este gato recibió una notificación push de que su cena estaba lista!
Espero que hayas disfrutado de este tutorial de notificaciones push. Si tiene alguna pregunta, no dude en dejarlas en el foro de discusión a continuación.
raywenderlich.com Semanal
El raywenderlich.com el boletín de noticias es la forma más fácil de mantenerse al día sobre todo lo que necesita saber como desarrollador móvil.
Obtenga un resumen semanal de nuestros tutoriales y cursos, y reciba un curso gratuito en profundidad por correo electrónico como bono!
puntuación Media
4.9/5
Añadir una clasificación para este contenido
iniciar sesión para añadir una clasificación