Apple Push Notifications — połączenia z APNs oparte na tokenach (część 3/4)

· Funkcje

W tym wpisie pokazuję, jak skonfigurować klienta JWT sgcWebSockets do wysyłania uwierzytelnionych żądań HTTP/2 do serwerów Apple Push Notification.

Zabezpiecz komunikację z usługą Apple Push Notification (APNs), używając bezstanowych tokenów uwierzytelniających.

Najpierw musisz uzyskać Encryption Key i Key ID z konta Apple Developer. Po pomyślnej rejestracji otrzymasz 10-znakowy łańcuch z Key ID oraz klucz do podpisywania tokenów uwierzytelniających w pliku z rozszerzeniem .p8.

Do wygenerowania JWT z algorytmem ES256 użyj klienta JWT sgcWebSockets. Tokenu nie należy generować przy każdym żądaniu HTTP/2 — nie powinien być odświeżany wcześniej niż po 20 minutach ani później niż po 60 minutach.

Konfiguracja klienta JWT 

Skonfiguruj klienta JWT następującymi wartościami:

Przy połączeniach opartych na tokenach musisz wysyłać nagłówek apns-topic z wartością bundle ID/app id twojej aplikacji (np. 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');