Configurar las notificaciones push de iOS
En los eventos entrantes, como 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 las notificaciones push de VoIP que proyecto de muestra finalizado.
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 Apple Push Notifications (APNs) utiliza autenticación basada en certificados para asegurar las conexiones entre los APNs, los servidores de Vonage y los dispositivos finales. Deberás crear un certificado y cargarlo en 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 su aplicación, actualizará el perfil de aprovisionamiento vinculado a su identificador de paquete para incluir las capacidades.
A continuación, seleccione añadir capacidad y añada el Notificaciones Push capacidad:

Generar un certificado push
Para generar un certificado push, deberá iniciar sesión en su cuenta de desarrollador de Apple y dirigirse a la sección Certificados, identificadores y perfiles y añada un nuevo certificado:

Elija una Servicio Apple Push Notification SSL (Sandbox y producción) y continuar.

Si la opción del servicio Apple Push Notification no está disponible para usted, tendrá que pedir a un administrador de su cuenta de desarrollador Apple developer Account 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 una CSR en su Mac. Una vez cargado el CSR, podrá descargar el certificado. Haga doble clic en el
.cer para instalarlo en Keychain Access.
Para obtener el certificado push en el formato que necesitan los servidores de Vonage, deberás exportarlo. Localiza tu
certificado del servicio Apple Push Notification en Acceso a llaveros y haz clic con el botón derecho para exportarlo. Asigna un nombre a la exportación
applecert y seleccione .p12 como formato:

Encontrará más información sobre la conexión a APN en Documentación oficial de Apple.
Cargue su certificado
Sube tu certificado a Vonage usando el panel de API. Abre tu aplicación en la sección salpicaderoy, a continuación, abre la pestaña "Activar notificaciones push":

Cargue su certificado, en .p12 del paso anterior y añada una contraseña si es necesario.
Uso del terminal
También puedes cargar tu certificado a través del terminal. Necesitarás tu ID de aplicación de Vonage para cargarlo mediante el terminal terminal, también deberás 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 ID
de tu aplicación de Vonage y PRIVATE_KEY con el nombre de su archivo de clave privada:
# A command with parameters
vonage jwt create `
--app-id='00000000-0000-0000-0000-000000000000' `
--private-key=./private.key
# Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzYyODE5NDYsImp0aSI6IjBmZjcwZDNmLTAzN2EtNGY4MC04ODZjLWI3MmM3MmQyMWNmMiIsImlhdCI6MTczNjI4MTA0NiwiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.gA7jClpqaZ2OoS0iri-zGCbda4jO7C0M8mka0EnSyjlds1EeY8fNoBEx3FTXHfkkzzrj0TskrWc_dcs1wuM8Kx55c5rLQ7taVpDAYopKSc_CeeOaad8S6aWnRkTUTNeduO4aIn-0CbyRTluBYsH1RBqYBQvobuQIDEwbFw8xBgx0UfREMMN6DAWknR57eiVXN9x_oD6CGQJ1yV3025nGboeMsP9YgX4Nwc-rE2r8c1ZGwCLO81x8i19Qil3Nwu5q1nzouyavQjIw00B_TZkushnI1ufdi_GNqk-h5q2HvGkg7Pj9bVkZHFdVTO8im03JYNyJmcV83vnpjOLuCFRzxQ
REM A command with parameters
vonage jwt create ^
--app-id='00000000-0000-0000-0000-000000000000' ^
--private-key=./private.key
REM Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzYyODE5NDYsImp0aSI6IjBmZjcwZDNmLTAzN2EtNGY4MC04ODZjLWI3MmM3MmQyMWNmMiIsImlhdCI6MTczNjI4MTA0NiwiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.gA7jClpqaZ2OoS0iri-zGCbda4jO7C0M8mka0EnSyjlds1EeY8fNoBEx3FTXHfkkzzrj0TskrWc_dcs1wuM8Kx55c5rLQ7taVpDAYopKSc_CeeOaad8S6aWnRkTUTNeduO4aIn-0CbyRTluBYsH1RBqYBQvobuQIDEwbFw8xBgx0UfREMMN6DAWknR57eiVXN9x_oD6CGQJ1yV3025nGboeMsP9YgX4Nwc-rE2r8c1ZGwCLO81x8i19Qil3Nwu5q1nzouyavQjIw00B_TZkushnI1ufdi_GNqk-h5q2HvGkg7Pj9bVkZHFdVTO8im03JYNyJmcV83vnpjOLuCFRzxQ
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, ejecute el siguiente comando Curl, sustituyendo jwt, applecert.p12, app_id con sus 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 está actualizando un token existente, elimínelo primero haciendo un DELETE solicitud al mismo
con la misma autenticación.
NOTA: No hay validación en este punto final. La dirección 200 código de retorno significa que Vonage obtuvo los datos y los almacenó
pero no ha comprobado que los valores sean válidos.
Integre las notificaciones push en su 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 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ístrese para recibir notificaciones Push de VoIP
Aplicar la PKPushRegistryDelegate didUpdate que le proporcionará una función 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 para 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 VoIP Push 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 el push entrante, necesitará una sesión activa perteneciente al destinatario de la llamada. Se recomienda crear simultáneamente una nueva sesión y llamar a processCallInvitePushData siempre que el usuario no esté atendiendo una llamada.
En processCallInvitePushData se complete correctamente, recibirá una invitación de llamada en el didReceiveInviteForCall función delegada. Aquí puede informar de 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úrese de que la sesión que creó anteriormente se ha 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 en la función didFinishLaunchingWithOptions AppDelegate función.
- Regístrese para recibir notificaciones push
Añada el didRegisterForRemoteNotificationsWithDeviceToken a su AppDelegate clase. Esto será llamado por el sistema para darle 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 para 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:
- Puede obtener más información sobre CallKit en desarrollador.apple.com.
- Para ver un tutorial completo, visite nuestro Blog sobre la gestión de las notificaciones push de VoIP.
- Ver el proyecto de muestra finalizado en GitHub.
Charla:
- Puede obtener más información sobre las notificaciones de usuario en desarrollador.apple.com.