iOS: implementar notificaciones remotas
En esta página, aprenderá cómo se manejan las notificaciones en su aplicación y cuáles son todas las opciones disponibles para crear una excelente experiencia de correo electrónico para sus usuarios.
Notificare admite varios tipos de notificaciones interactivas y procesables que se procesarán por usted sin ningún desarrollo adicional. Si desea evitar este comportamiento predeterminado, tenga en cuenta que deberá administrar todas las funciones usted mismo (registro de métricas, presentación de la interfaz de usuario o recopilación de respuestas) o, si no lo hace, comprende que algunas funciones no funcionarán como deberían. anunciado. .
Habilitar notificaciones
Para permitir que el dispositivo reciba notificaciones, solo necesita invocar un único método.
Notificare.shared.push().enableRemoteNotifications { result in
}
Normalmente, el paso anterior se realiza durante algún tipo de incorporación de usuarios. Cuando el usuario ya ha seguido este feed, habilitamos automáticamente las notificaciones cuando se inicia Notificare.
También puede comprobar si el usuario se ha registrado para recibir notificaciones remotas.
Notificare.shared.push().hasRemoteNotificationsEnabled
Además, puede comprobar si el usuario ha desactivado las notificaciones en la configuración del sistema.
Notificare.shared.push().allowedUI
Desactivar notificaciones de forma remota
Deshabilitar las notificaciones de forma remota se puede hacer de la misma manera que habilitarlas.
Notificare.shared.push().disableRemoteNotifications { result in
}
Cuando se llama a este método, registraremos automáticamente su dispositivo para nunca recibir notificaciones remotas, aunque siempre mantendrá el mismo perfil de usuario, los mismos mensajes de la bandeja de entrada y disfrutará de todos los demás servicios admitidos por su plan. Puede solicitar volver a registrarse para recibir notificaciones automáticas en cualquier momento si lo desea.
Recibir notificaciones
Antes de poder comenzar a recibir notificaciones automáticas, deberá definir la funcionalidad de su proyecto. Vaya al destino de su aplicación (en el Portal de desarrolladores de Apple), haga clic en la pestaña Capacidades y agregue notificaciones automáticas y modos de entrega, notificaciones en segundo plano/remotas como se muestra a continuación.
Opciones de permiso
Nuestro SDK le permite configurar las opciones de permiso de notificación que desea solicitarle a su usuario. Este es un paso opcional; si no se configura, guardaremos UNAuthorizationOptions.alert
, UNAuthorizationOptions.badge
y UNAuthorizationOptions.sound
como predeterminados. Para configurar las opciones de permiso, agregue lo siguiente a su AppDelegate
y personalícelo según sea necesario:
if #available(iOS 13.0, *) {
Notificare.shared.push().authorizationOptions = [.alert, .badge, .sound, .providesAppNotificationSettings, .provisional, .announcement]
} else if #available(iOS 12.0, *) {
Notificare.shared.push().authorizationOptions = [.alert, .badge, .sound, .providesAppNotificationSettings, .provisional]
} else {
Notificare.shared.push().authorizationOptions = [.alert, .badge, .sound]
}
Tenga en cuenta que las siguientes opciones de autorización están disponibles: UNAuthorizationOptions.announcement
introducida por primera vez en iOS 13. Las opciones UNAuthorizationOptions.providesAppNotificationSettings
y UNAuthorizationOptions.provisional
están disponibles desde iOS 12. Las UNAuthorizationOptions. La opción "Anuncio" permitirá que Siri lea automáticamente los mensajes en AirPods, la opción
UNAuthorizationOptions.provisional`` guardará las notificaciones con permiso provisional, esto significa que no se pedirá a los usuarios que acepten notificaciones en el cuadro de diálogo de permiso. Si bien esta puede ser una excelente manera de permitir a los usuarios recibir notificaciones remotas, cualquier mensaje que envíe después se entregará de forma silenciosa. Los mensajes transmitidos en silencio no se mostrarán en la pantalla de bloqueo ni se reproducirán sonidos.
También tenga en cuenta que si implementa la opción UNAuthorizationOptions.providesAppNotificationSettings
, las notificaciones de su aplicación mostrarán un botón tanto en el menú de configuración instantánea como en la configuración de notificaciones. El propósito de este botón es brindar a los usuarios un acceso directo a la configuración de su aplicación donde pueden ajustar el tipo de notificaciones que desean recibir. Se recomienda encarecidamente implementar dichas vistas de configuración, ya que esta podría ser la razón por la que permite que su aplicación siga viendo notificaciones o esté completamente silenciada. Si implementa esta opción, es obligatorio implementar el siguiente método NotificarePushDelegate
:
func notificare(_ notificare: NotificarePush, shouldOpenSettings notification: NotificareNotification?) {
// Deep link to your settings view.
}
Esto le dará la posibilidad de presentar a sus usuarios la vista de configuración de la aplicación, donde deberá permitirles personalizar el tipo de notificaciones que deben recibir. Si el usuario hizo clic en el botón de una notificación específica, también recibirá ese asunto. Cuando provenga de la configuración de notificaciones, este objeto será nulo.
Opciones de presentación
Opcionalmente, puedes habilitar las opciones de presentación cuando tu aplicación esté en primer plano. Esto le permitirá mostrar un pequeño banner en la parte superior de su aplicación, reproducir un sonido o identificar su aplicación cada vez que llegue una notificación y su aplicación esté en uso. De forma predeterminada, nuestra biblioteca establecerá esto en UNNotificationPresentationOptions = [], pero puedes cambiar este comportamiento para adaptarlo a tus necesidades:
if #available(iOS 14.0, *) {
Notificare.shared.push().presentationOptions = [.banner, .sound, .badge]
} else {
Notificare.shared.push().presentationOptions = [.alert, .sound, .badge]
}
Escuchar las notificaciones recibidas
Una vez que reciba notificaciones en su aplicación, podremos profundizar y comprender completamente cómo se procesan. Si desea recibir notificaciones de notificaciones entrantes en su instancia NotificarePushDelegate
, por ejemplo para agregar una insignia en su aplicación, puede implementar el siguiente método.
extension AppDelegate: NotificarePushDelegate {
func notificare(_ notificare: NotificarePush, didReceiveNotification notification: NotificareNotification, deliveryMechanism: NotificareNotificationDeliveryMechanism) {
}
}
Mostrar notificaciones
Se puede abrir una notificación tocando la notificación misma o tocando una acción dentro de la notificación. Emitiremos un evento en cada caso para NotificarePushDelegate
.
extension AppDelegate: NotificarePushDelegate {
func notificare(_ notificare: NotificarePush, didOpenNotification notification: NotificareNotification) {
}
func notificare(_ notificare: NotificarePush, didOpenAction action: NotificareNotification.Action, for notification: NotificareNotification) {
}
}
Para manejar los eventos anteriores, puede adoptar el enfoque administrado y utilizar nuestro módulo NotificarePushUI
que admite todos los eventos y tipos de UI, así como acciones, o puede admitirlos por completo y presentarlos como desee. Sin embargo, tenga en cuenta si adopta un enfoque no administrado, ya que deberá administrar todos los aspectos y tipos de presentación de notificaciones, incluidos los eventos necesarios para mostrar la participación del usuario en nuestro panel.
Lo primero que necesita, para manejar todo tipo de notificaciones, es asegurarse de que su aplicación declare los siguientes permisos en el archivo "Info.plist" de su aplicación:
Esto garantizará que su aplicación pueda solicitar acceso a la cámara o biblioteca de fotos del dispositivo cuando sea necesario.
El siguiente código ilustra cómo funciona esto cuando se utiliza el enfoque administrado.
extension AppDelegate: NotificarePushDelegate {
func notificare(_ notificare: NotificarePush, didOpenNotification notification: NotificareNotification) {
let controller: UIViewController = /* find your desired controller to present the UI in */
Notificare.shared.pushUI().presentNotification(notification, in: controller)
}
func notificare(_ notificare: NotificarePush, didOpenAction action: NotificareNotification.Action, for notification: NotificareNotification) {
let controller: UIViewController = /* find your desired controller to present the UI in */
Notificare.shared.pushUI().presentAction(action, for: notification, in: controller)
}
}
Además, cuando utiliza el enfoque administrado, puede escuchar los eventos del ciclo de vida de las notificaciones y tomar los pasos adicionales que pueda necesitar. Deje que su AppDelegate
implemente NotificarePushUIDelegate
y agregue los siguientes métodos si es necesario.
extension AppDelegate: NotificarePushUIDelegate {
// MARK: - Notifications
func notificare(_ notificare: NotificarePushUI, willPresentNotification notification: NotificareNotification) {
}
func notificare(_ notificare: NotificarePushUI, didPresentNotification notification: NotificareNotification) {
}
func notificare(_ notificare: NotificarePushUI, didFinishPresentingNotification notification: NotificareNotification) {
}
func notificare(_ notificare: NotificarePushUI, didFailToPresentNotification notification: NotificareNotification) {
}
func notificare(_ notificare: NotificarePushUI, didClickURL url: URL, in notification: NotificareNotification) {
}
// MARK: - Actions
func notificare(_ notificare: NotificarePushUI, willExecuteAction action: NotificareNotification.Action, for notification: NotificareNotification) {
}
func notificare(_ notificare: NotificarePushUI, didExecuteAction action: NotificareNotification.Action, for notification: NotificareNotification) {
}
func notificare(_ notificare: NotificarePushUI, didNotExecuteAction action: NotificareNotification.Action, for notification: NotificareNotification) {
}
func notificare(_ notificare: NotificarePushUI, didFailToExecuteAction action: NotificareNotification.Action, for notification: NotificareNotification, error: Error?) {
}
func notificare(_ notificare: NotificarePushUI, shouldPerformSelectorWithURL url: URL, in action: NotificareNotification.Action, for notification: NotificareNotification) {
}
}
Si planea admitir páginas que no sean HTTPS cuando utilice el tipo de notificación de página web, también deberá declarar una política ATS más permisiva de la siguiente manera: