Saltar al contenido principal

Implementar notificaciones push en iOS

Si completó los pasos de la guía Configuración y recuperó el archivo SDK del repositorio Git para aplicación push en iOS, ahora está listo para implementar nuestra biblioteca iOS en su aplicación. Nuestra biblioteca es compatible con iOS versión 13 y superior. Asegúrese de tener la última versión de Xcode cuando utilice esta biblioteca.

precaución

Si está actualizando desde una versión anterior de nuestra biblioteca, siempre es una buena idea leer nuestra guía de migración.

Dependencias

El SDK de Notificare es compatible con aplicaciones compatibles con iOS 13 y superiores y se puede instalar con Swift Package Manager o CocoaPods.

  1. Si está utilizando Swift Package Manager, abra el menú Archivo > Paquetes Swift > Agregar dependencia del paquete.
  2. En el mensaje Elegir repositorio de paquetes, agregue la siguiente URL:
https://github.com/Notificare/notificare-sdk-ios.git
  1. Toque Siguiente y complete los pasos restantes.

Para obtener más información sobre SPM, consulte su documentación oficial.

Archivo de configuración

Para conectar tu aplicación a Notificare, debes descargar el archivo de configuración del TransferBox de tu licencia (donde fue descargado por el equipo de Actito) y colocarlo en la carpeta raíz de tu proyecto bajo el nombre ``NotificareServices. .

Para su información, así es como debería verse este archivo:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>APPLICATION_ID</key>
<string>{{ YOUR APPLICATION ID }}</string>
<key>APPLICATION_KEY</key>
<string>{{ YOUR APPLICATION KEY }}</string>
<key>APPLICATION_SECRET</key>
<string>{{ YOUR APPLICATION SECRET }}</string>
</dict>
</plist>

De forma predeterminada, crearemos dos aplicaciones diferentes en Notificare utilizando entornos separados para desarrollo y producción. Para cada aplicación tendrá un conjunto diferente de claves, lo que dará como resultado dos archivos de configuración diferentes. Recomendamos aprovechar las fases de compilación de Xcode para administrar qué archivo se integrará en la aplicación. Puede obtener más información sobre esto en la sección Personalizaciones de la documentación de Notificare.

El delegado de Notificare

Aunque este es un paso opcional, al configurar su propio delegado puede escuchar los eventos ready y device_registered. Podrás aprovechar para realizar pasos adicionales cuando Notificare esté listo o cuando el dispositivo esté actualizado.

extension AppDelegate: NotificareDelegate {
func notificare(_ notificare: Notificare, onReady application: NotificareApplication) {
// At this point you have been assigned a temporary device identifier
// All services subscribed can be used
}

func notificare(_ notificare: Notificare, didRegisterDevice device: NotificareDevice) {
// At this point you know a device is registered with the Notificare API.
// This method will be called once when the device is registered.
}
}

Para notificar a Notificare sobre su delegado, puede ejecutar la siguiente declaración:

Notificare.shared.delegate = self // where self complies with `NotificareDelegate`

Iniciar notificación

Iniciar Notificare es tan simple como llamar a Notificare.shared.launch(). Sin embargo, antes de comenzar, es posible que desees considerar personalizar algunas propiedades.

Si creó un delegado personalizado, también debe configurar la propiedad Notificare.shared.delegate para indicarle a Notificare qué clase manejará los eventos.

Debe iniciar Notificare cuando se inicie la aplicación iOS. A continuación se puede encontrar un pequeño código de muestra.

class AppDelegate: UIResponder, UIApplicationDelegate {

func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.

// In case you want to setup your delegate.
Notificare.shared.delegate = self

// Launch Notificare! 🚀
Notificare.shared.launch { result in
switch result {
case .success:
// Notificare is now ready.
break
case let .failure(error):
// Something went wrong ...
break
}
}
}
}

Puedes retrasar el inicio de Notificare por primera vez. De lo contrario, asegúrese de iniciar() durante la fase de inicialización de la aplicación para evitar perder actualizaciones importantes mientras la aplicación se construye en segundo plano.

Aunque launch() es una función de suspensión (con una alternativa de devolución de llamada), también puedes usar el método onReady() de NotificareDelegate como se muestra a continuación cuando quieras controlar el estado de las dependencias. en el flujo de inicialización de su aplicación.

extension AppDelegate: NotificareDelegate {
func notificare(_: Notificare, onReady application: NotificareApplication) {
// Notificare is now safe to use.
}
}

Cancelar el lanzamiento de Notificare

Es posible eliminar completamente todos los datos de un dispositivo, tanto localmente en su aplicación como de forma remota en nuestros servidores. Desea evitar hacer esto, pero en los casos en que el usuario solicite eliminar su cuenta, puede utilizar el siguiente método:

Notificare.shared.unlaunch { result in
}

Después de invocar esta función, todos los datos del dispositivo se destruirán y ya no se podrán deshacer. Una vez que se complete el proceso, se ejecutará el método onUnlaunched de su NotificareDelegate.

extension AppDelegate: NotificareDelegate {
func notificareDidUnlaunch(_: Notificare) {
// All device data was deleted.
// Notificare cannot be used until it's launched again.
}
}

En este punto, llamar a cualquier otro método en Notificare fallará y la única forma de comenzar a usar el SDK nuevamente es invocar su contraparte, el método launch.

Usando SwiftUI

El nuevo ciclo de vida de la aplicación SwiftUI fue una buena mejora con respecto al proceso de inicialización tradicional, haciéndolo declarativo. Justo como se supone que es SwiftUI.

Sin embargo, este cambio eliminó el AppDelegate predeterminado, lo que significa que debe proporcionar uno usted mismo. Una vez que haya creado el archivo AppDelegate, debe usar el contenedor de propiedades UIApplicationDelegateAdaptor para inyectarlo.

@main
struct SampleApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

var body: some Scene {
WindowGroup {
ContentView()
}
}
}

Además, nuestro SDK utiliza AppDelegate para procesar automáticamente notificaciones y tokens APNS. Dado que el SwiftUI.AppDelegate interno interrumpe nuestro proceso de swizzling, es necesario desactivar el mecanismo de swizzling y pasar los métodos relevantes a nuestro SDK. Consulte la sección personalizaciones para obtener más información.