Configurar las notificaciones push de iOS
Cuando se producen eventos como la llegada de un nuevo mensaje o una llamada entrante, el usuario suele esperar recibir una notificación push, si la aplicación no está activa.
En el caso de Voice, puedes integrar notificaciones push de VoIP en tu aplicación mediante PushKit y CallKit. En nuestro blog tutorial completo sobre cómo integrar notificaciones push de VoIP que incluyan una proyecto de ejemplo terminado.
Para Chat, puede integrar Notificaciones a los usuarios en su aplicación. Puedes personalizar el push que recibes de Vonage antes de mostrárselo a tu usuario con un extensión de la aplicación del servicio de notificaciones.
Crear un certificado Push
El servicio de notificaciones push de Apple (APNs) utiliza una autenticación basada en certificados para proteger las conexiones entre APNs, los servidores de Vonage y los dispositivos finales. Deberás crear un certificado y subirlo a los servidores de Vonage.
Añadir una función de notificación push
Para utilizar las notificaciones push es necesario añadir la función de notificaciones push al proyecto Xcode. Para ello seleccione su objetivo y seleccione Firma y capacidades:

A continuación, seleccione añadir capacidad y añada el Notificaciones Push y Modos de fondo capacidades:

En la opción Modos de fondo, seleccione Voz sobre IP y Proceso de fondo. Si Xcode gestiona automáticamente la firma de tu aplicación, actualizará el perfil de aprovisionamiento vinculado a tu identificador de paquete para incluir las capacidades.
A continuación, seleccione añadir capacidad y añada el Notificaciones Push capacidad:

Cómo generar un certificado Push
Para generar un certificado push, tendrás que iniciar sesión en tu Account de desarrollador de Apple y dirigirte a la Certificados, identificadores y perfiles página y añade un nuevo certificado:

Elija una Servicio de notificaciones push de Apple con SSL (entorno de pruebas y producción) y continuar.

Si no tienes disponible la opción del servicio de notificaciones push de Apple, tendrás que pedirle a un administrador de tu account de desarrollador de Apple que realice este paso por ti.
Ahora tendrá que elegir el ID de la aplicación a la que desea añadir notificaciones push y continuar. Si su aplicación no aparece en la lista, tendrá que crear un ID de aplicación. Xcode puede hacer esto por usted si automáticamente si gestiona su firma para usted, de lo contrario puede crear un nuevo App ID en el Certificados, identificadores y perfiles página en * Identificadores*. Al hacerlo, asegúrate de seleccionar la función de notificaciones push.
Se le pedirá que cargue una solicitud de firma de certificado (CSR). Puede seguir las instrucciones en
Sitio web de ayuda de Apple
para crear un CSR en tu Mac. Una vez subido el CSR, podrás descargar el certificado. Haz doble clic en el
.cer para instalarlo en Keychain Access.
Para obtener el certificado de notificaciones push en el formato que requieren los servidores de Vonage, tendrás que exportarlo. Busca tu
certificado del servicio de notificaciones push de Apple en «Acceso a llaveros» y haz clic con el botón derecho del ratón para exportarlo. Asigna un nombre a la exportación
applecert y seleccione .p12 con el siguiente formato:

Encontrará más información sobre la conexión a APN en Documentación oficial de Apple.
Sube tu certificado
Debes subir tu certificado a Vonage a través del panel de control de la API. Abre tu aplicación en el cuadro de mandoy, a continuación, abre la pestaña "Activar notificaciones push":

Sube tu certificado, en .p12 del paso anterior y añada una contraseña si es necesario.
Uso del terminal
También puedes subir tu certificado a través del terminal. Necesitarás tu ID de aplicación de Vonage para subirlo mediante el terminal; además, tendrás que generar un JWT de administrador de Vonage.
Para generar un JWT de administrador de Vonage, ejecuta el siguiente comando CLI de Vonage. Recuerda reemplazar el campo APPLICATION_ID con el ID
de tu solicitud de Vonage y PRIVATE_KEY con el nombre del archivo de tu clave privada:
NOTA Un JWT admin es un JWT sin una sub-reclamación. Encontrará más información sobre cómo generar un JWT en la sección guía de autenticación.
A continuación, ejecuta el siguiente comando de Curl, sustituyendo jwt, applecert.p12, app_id con tus valores:
Si ha utilizado una contraseña al exportar el certificado, añádala al cuerpo de la solicitud de la forma siguiente:
-d "{\"password\":\"$PASSWORD\"}" \
Si vas a actualizar un token ya existente, elimina primero el token actual creando un DELETE solicitud al mismo
punto final con la misma autenticación.
NOTA: No hay validación en este punto final. La dirección 200 El código de respuesta indica que Vonage ha recibido los datos y los ha almacenado,
pero aún no ha comprobado que los valores sean válidos.
Notificaciones de caducidad de certificados APN
Vonage ofrece un servicio de notificaciones que te avisa cuando un certificado APN asociado a tu Account está a punto de caducar o ya ha caducado, lo que ayuda a evitar fallos en las notificaciones push. Para activarlo:
- Inicie sesión en Panel de Vonage.
- Seleccionar Ajustes API en el menú de navegación de la izquierda.
- Haz clic en el Notificaciones pestaña.
- Haz clic en el + Suscríbete para recibir notificaciones pulsa el botón que aparece en «Configuración de la suscripción» para ver el siguiente formulario:

- Selecciona la categoría de notificación: Servicio de notificaciones push.
- Selecciona el tipo de notificación: «Aviso de caducidad del certificado APNs».
- Introduce un nombre; es solo a título informativo, para que te acuerdes de para qué es esta suscripción.
- Activa la opción «Recibir notificaciones para subcuentas» si deseas que los certificados de las subcuentas también activen notificaciones.
- Introduce una o varias direcciones de correo electrónico (separadas por comas); todas las direcciones indicadas recibirán la notificación al mismo tiempo.
- Haz clic Guardar.
Se creará tu suscripción y la verás en el menú desplegable «Servicio Push» de «Configuración de la suscripción».
Integra las notificaciones push en tu aplicación
Una vez que hayas cargado tu certificado en Vonage, integra VoIP push en tu aplicación siguiendo estos pasos:
1. Enlazar el CallKit Marco
Cuando utilices notificaciones push de VoIP, tendrás que usar el framework CallKit. Enlázalo a tu proyecto añadiéndolo en Marcos, bibliotecas y contenidos integrados en la sección «General»:

2. Configurar PushKit
En su AppDelegateañada un voipRegistry propiedad:
let voipRegistry = PKPushRegistry(queue: nil)
y configurarlo:
func registerForVoIPPushes() {
self.voipRegistry.delegate = self
self.voipRegistry.desiredPushTypes = [PKPushType.voIP]
}
Llame a la función anterior en el didFinishLaunchingWithOptions AppDelegate función.
3. Regístrate para recibir notificaciones push de VoIP
Implementar el PKPushRegistryDelegate didUpdate función delegada, que te proporcionará un PKPushCredentials objeto. Este objeto contiene el token necesario para registrar este dispositivo.
NOTA: Antes de registrar el token, asegúrese de que primero ha creado correctamente una sesión.
Llame a registerDevicePushToken en el VGVoiceClient después de crear una sesión y pasar el token de credenciales push:
var isSandbox = false
#if DEBUG
isSandbox = true
#endif
client.registerVoipToken(token, isSandbox: isSandbox) { error, deviceId in
if error == nil {
// Push token registered
} else {
// Push token registration error
}
}
Esto vinculará el token a este dispositivo y al usuario que creó la sesión. Por ejemplo, si creaste una sesión con el usuario Alicecada vez que hay una llamada entrante para Alice Vonage buscará el token del dispositivo correspondiente a Alice. 'isSandbox' le permite controlar si está utilizando el servidor de notificaciones push sandbox de Apple o no. Puede utilizar el deviceId para anular el registro del dispositivo para push.
4. Gestionar una notificación push de VoIP entrante
Cuando el dispositivo recibe una notificación push de VoIP entrante, el PKPushRegistryDelegate función delegada didReceiveIncomingPushWith será llamado. Aquí tendrás que comprobar si este push es de Vonage, y procesarlo:
func isVonagePush(with userInfo: [AnyHashable : Any]) -> Bool {
VGVoiceClient.vonagePushType(userInfo) == .unknown ? false : true
}
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
if isVonagePush(with: payload.dictionaryPayload) {
if let invite = client.processCallInvitePushData(payload) {
// Report new call to CallKit
} else {
// Report failed call to CallKit
}
}
}
Para procesar la notificación entrante, necesitarás una sesión activa que pertenezca al destinatario de la llamada. Se recomienda crear una nueva sesión al mismo tiempo y llamar a processCallInvitePushData siempre que el usuario no esté en una llamada en ese momento.
En processCallInvitePushData se complete correctamente, recibirá una invitación de llamada en el didReceiveInviteForCall función delegada. Aquí puede denunciar la llamada a CallKit.
func voiceClient(_ client: VGVoiceClient, didReceiveInviteForCall callId: String, from caller: String, withChannelType type: String) {
let activeCall = UUID(uuidString: callID)
let update = CXCallUpdate()
update.localizedCallerName = caller
// provider is an instance of CXProvider
provider.reportNewIncomingCall(with: activeCall!, update: update) { error in
if error == nil {
completion()
}
}
}
NOTA: Antes de llamar answer o reject Para la invitación a la llamada, asegúrate de que la sesión que has creado anteriormente se haya creado correctamente.
Una vez que hayas cargado tu certificado en Vonage, integra push en tu aplicación siguiendo estos pasos:
- Solicitar permisos para notificaciones push
func registerForPushNotificationsIfNeeded() {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { [weak self] granted, _ in
print("Permission granted: \(granted)")
if granted {
self?.getNotificationSettings()
}
}
}
func getNotificationSettings() {
UNUserNotificationCenter.current().getNotificationSettings { settings in
print("Notification settings: \(settings)")
guard settings.authorizationStatus == .authorized else { return }
Task { @MainActor in
UIApplication.shared.registerForRemoteNotifications()
}
}
}
Llame al registerForPushNotificationsIfNeeded función en el didFinishLaunchingWithOptions AppDelegate función.
- Regístrese para recibir notificaciones push
Añade el didRegisterForRemoteNotificationsWithDeviceToken función a tu AppDelegate clase. El sistema la llamará para proporcionarte un token de dispositivo. Llama a registerDeviceToken en el VGChatClient después de crear una sesión y pasar el token del dispositivo:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
var isSandbox = false
#if DEBUG
isSandbox = true
#endif
client.registerDeviceToken(deviceToken, isSandbox: isSandbox) { error, deviceId in
...
}
}
Esto vinculará el token a este dispositivo y al usuario que creó la sesión. Por ejemplo, si creaste una sesión con el usuario Alicecada vez que hay un mensaje entrante para Alice Vonage buscará el token del dispositivo correspondiente a Alice. 'isSandbox' le permite controlar si está utilizando el servidor de notificaciones push sandbox de Apple o no. Puede utilizar el deviceId para anular el registro del dispositivo para push.
Conclusión
En esta guía has visto cómo configurar las notificaciones push.
Voz:
- Puedes obtener más información sobre CallKit en desarrollador.apple.com.
- Si quieres ver un tutorial completo, visita nuestra Blog sobre la gestión de las notificaciones push de VoIP.
- Ver el proyecto de ejemplo terminado en GitHub.
Chat:
- Puedes obtener más información sobre las notificaciones de usuario en desarrollador.apple.com.