Apple Push Notifications - Conexiones basadas en token a APNs (Parte 3/4)

· Características

En este artículo te mostraré cómo configurar el cliente JWT de sgcWebSockets para enviar solicitudes HTTP/2 autenticadas a los servidores Apple Push Notification.

Asegura tus comunicaciones con el servicio Apple Push Notification (APNs) usando tokens de autenticación sin estado.

Primero debes obtener una Encryption Key y un Key ID desde tu Apple Developer Account. Tras un registro correcto, obtendrás una cadena de 10 caracteres con el Key ID y una Authentication Token signing key con extensión .p8.

Debes usar el cliente JWT de sgcWebSockets para generar un JWT con ES256 como algoritmo. El token no debe generarse para cada solicitud HTTP/2; no debe refrescarse antes de 20 minutos ni después de 60 minutos.

Configurar el cliente JWT 

Configura el cliente JWT con los siguientes valores:

Usar conexiones basadas en token requiere enviar el apns-topic con el valor del bundle ID/app id de tu app (ejemplo: com.example.application).

oHTTP := TsgcHTTP2Client.Create(nil);
oHTTP.TLSOptions.IOHandler := iohOpenSSL;
oJWT := TsgcHTTP_JWT_Client.Create(nil);
oHTTP.Authentication.Token.JWT := oJWT;
oJWT.JWTOptions.Header.alg := jwtES256;
oJWT.JWTOptions.Header.kid := 'apple key id';
oJWT.JWTOptions.Payload.iss := 'issuer';
oJWT.JWTOptions.Payload.iat := StrToInt64(GetDateTimeUnix(Now, False));
oJWT.JWTOptions.Algorithms.ES.PrivateKey.LoadFromFile('AuthKey_**.p8');
oJWT.JWTOptions.RefreshTokenAfter := 60*40;
oHTTP.Request.CustomHeaders.Clear;
oHTTP.Request.CustomHeaders.Add('apns-topic: com.example.application');