Autenticación basada en token (HTTP/2) para APNs
Información general
Este artículo explica cómo usar el nuevo protocolo HTTP/2 de APNs con la autenticación basada en token.
Entre las ventajas principales de usar el nuevo protocolo destacan las siguientes:
- La generación de tokens es relativamente simple (comparada con los certificados)
- Ya no hay fechas de expiración: es usted quien controla los tokens de autenticación y su revocación.
- Ahora las cargas pueden ser de hasta 4 KB.
- Los comentarios son sincrónicos.
- Está en el protocolo más reciente de Apple: los certificados siguen usando el protocolo binario, que está marcado como en desuso
Para usar este mecanismo nuevo, basta con que realice dos pasos:
- Obtenga la información necesaria en el portal de la cuenta de Desarrollador de Apple.
- Configure el centro de notificaciones con la nueva información.
Ahora, Notification Hubs está configurados para usar el nuevo sistema de autenticación con APNs.
Tenga en cuenta que si migró del uso de credenciales de certificado para APNS, las propiedades del token sobrescriben su certificado en nuestro sistema, pero su aplicación continúa recibiendo notificaciones sin problemas.
Obtener información de autenticación de Apple
Para habilitar la autenticación basada en token, necesita las siguientes propiedades de la cuenta de Desarrollador de Apple:
Identificador de clave
El identificador de clave se puede obtener de la página Claves en Certificados, identificadores y perfiles, en su cuenta de Desarrollador de Apple:
Identificador y nombre de la aplicación
El nombre y el identificador de la aplicación también están disponibles en la página Certificados, identificadores y perfiles en la cuenta de desarrollador.
Configurar mediante SDK de .NET o el Azure Portal
Puede configurar el centro para que use la autenticación basada en token mediante nuestro SDK de cliente más reciente o en el Azure Portal. Para habilitar la autenticación basada en token en el portal, inicie sesión en Azure Portal y vaya al panel Configuración > Apple (APNS) de su centro de notificaciones. Seleccione token en la propiedad Modo de autenticación para actualizar el concentrador con todas las propiedades de token relevantes.
- Escriba las propiedades que ha recuperado de la cuenta de Desarrollador de Apple.
- Elija el modo de aplicación (producción o espacio aislado).
- Haga clic en el botón Guardar para actualizar las credenciales de APNS.
Las credenciales basadas en token se componen de los siguientes campos:
- El identificador de la clave: Identificador de la clave privada generada en el portal para Desarrolladores de Apple, por ejemplo,
2USFGKSKLT
. - Id. de equipo: también se denomina "prefijo" o "prefijo de aplicación". Se trata del identificador de la organización en el portal para desarrolladores de Apple; por ejemplo,
S4V3D7CHJR
. - Identificador de agrupación: También se denomina "Id. de la aplicación". Este es el identificador de agrupación de la aplicación, por ejemplo,
com.example.myapp
. Tenga en cuenta que solo puede usar una clave para una aplicación. Este valor se asigna al encabezado HTTPapns-topic
al enviar una notificación y se usa para apuntar a la aplicación específica. No puede establecer el valor deapns-topic
explícitamente. - Token: también se denomina "clave" o "clave privada". Se obtiene del archivo .p8 generado en el portal para desarrolladores de Apple. La clave debe tener APNS habilitado (que se selecciona en el portal de Desarrolladores de Apple al generar la clave). El valor debe tener el encabezado PE/pie de página que se elimina cuando lo proporcione al NH Portal/API.
- Punto de conexión: Este es un comando en la hoja del portal de Notification Hubs y un campo de cadena en la API. Los valores válidos son
https://api.development.push.apple.com:443/3/device
yhttps://api.sandbox.push.apple.com:443/3/device
. Notification Hubs utiliza este valor para el entorno de producción o espacio aislado, para enviar notificaciones. Esto debe coincidir con el derechoaps-environment
en la aplicación; de lo contrario, los tokens del dispositivo APNS generados no coinciden con el entorno y las notificaciones no se envían.
A continuación se muestra un ejemplo de código que ilustra el uso correcto:
NamespaceManager nm = NamespaceManager.CreateFromConnectionString(_endpoint);
string token = "YOUR PRIVATE KEY HERE";
string keyId = "YOUR KEY ID HERE";
string appName = "YOUR APP NAME HERE";
string appId = "YOUR APP ID HERE";
NotificationHubDescription desc = new NotificationHubDescription("PATH TO YOUR HUB");
desc.ApnsCredential = new ApnsCredential(token, keyId, appId, appName);
desc.ApnsCredential.Endpoint = @"https://api.development.push.apple.com:443/3/device";
nm.UpdateNotificationHubAsync(desc);