Apple Push Notifications

Wysyłaj powiadomienia push APNs z Delphi przez HTTP/2 do api.push.apple.com. Obsługuje zarówno uwierzytelnianie oparte na certyfikatach, jak i oparte na tokenach (JWT ES256).

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Połącz TsgcHTTP2Client (transport HTTP/2) z TsgcHTTP_JWT_Client (generowanie tokenów ES256), aby obsługiwać APNs — kombinacja zalecana przez Apple od czasu wycofania starszego protokołu binarnego.

Klasa komponentu

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Protokół

APNs HTTP/2

Platformy

Windows, macOS, Linux, iOS, Android

Edycja

Standard / Professional / Enterprise

Podpisz JWT, wyślij POST z alertem, obserwuj status HTTP/2

Skonfiguruj TsgcHTTP_JWT_Client z kluczem prywatnym ES256 APNs i identyfikatorami klucza/zespołu, połącz z TsgcHTTP2Client.Authentication.Token.JWT, następnie wykonaj POST z payloadem JSON do /3/device/<token>.

uses
  sgcHTTP, sgcBase_Helpers;

var
  HTTP2: TsgcHTTP2Client;
  JWT: TsgcHTTP_JWT_Client;
begin
  JWT := TsgcHTTP_JWT_Client.Create(nil);
  JWT.JWTOptions.Header.alg := jwtES256;
  JWT.JWTOptions.Header.kid := 'APPLE-KEY-ID';
  JWT.JWTOptions.Payload.iss := 'APPLE-TEAM-ID';
  JWT.JWTOptions.Payload.iat := StrToInt64(GetDateTimeUnix(Now, False));
  JWT.JWTOptions.Algorithms.ES.PrivateKey.LoadFromFile('AuthKey_XXX.p8');
  JWT.JWTOptions.RefreshTokenAfter := 40 * 60;

  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.TLSOptions.IOHandler := iohSChannel;
  HTTP2.Authentication.Token.JWT := JWT;
  HTTP2.Request.CustomHeaders.Clear;
  HTTP2.Request.CustomHeaders.Add('apns-topic: com.example.app');

  HTTP2.Post(
    'https://api.push.apple.com/3/device/',
    '{"aps":{"alert":"hello","sound":"default"}}');
end;
// uses: sgcHTTP
TsgcHTTP_JWT_Client *JWT = new TsgcHTTP_JWT_Client(this);
JWT->JWTOptions->Header->alg = jwtES256;
JWT->JWTOptions->Header->kid = "APPLE-KEY-ID";
JWT->JWTOptions->Payload->iss = "APPLE-TEAM-ID";
JWT->JWTOptions->Algorithms->ES->PrivateKey->LoadFromFile("AuthKey_XXX.p8");

TsgcHTTP2Client *HTTP2 = new TsgcHTTP2Client(this);
HTTP2->Authentication->Token->JWT = JWT;
HTTP2->Request->CustomHeaders->Add("apns-topic: com.example.app");
HTTP2->Post("https://api.push.apple.com/3/device/", payload);

Co jest w środku

Dwa współpracujące komponenty obsługują APNs od końca do końca — ramkowanie HTTP/2 i generowanie JWT.

Uwierzytelnianie tokenem

JWT ES256 podpisane kluczem prywatnym Apple AuthKey_*.p8. Klient JWT odświeża token automatycznie co 40 minut (Apple oczekuje rotacji w ciągu godziny).

Uwierzytelnianie certyfikatem

Dla starszych certyfikatów uniwersalnych ustaw TLSOptions.CertFile + Password i wyczyść Authentication.Token.JWT. Handshake TLS uwierzytelnia połączenie.

Produkcja / Sandbox

Wskaż URL na api.push.apple.com dla produkcji lub api.development.push.apple.com dla środowiska testowego — ten sam komponent, tylko inny host.

apns-topic i nagłówki

Ustaw Request.CustomHeaders dla apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration zgodnie z dokumentacją Apple.

Multipleksowanie HTTP/2

Jedno połączenie TLS wysyła tysiące powiadomień push na minutę — strumienie HTTP/2 multipleksują żądania. Sprawdzaj Response.Status dla każdego wywołania, aby poznać wyniki dostarczenia.

SChannel lub OpenSSL

Użyj iohSChannel na Windows dla TLS w trybie jądra (bez DLL) lub iohOpenSSL do wieloplatformowych wdrożeń serwerowych.

Specyfikacje i źródła

Autorytatywne źródła dla API implementowanych przez ten komponent.

Dokumentacja i wersje demo

Deep-link do dokumentacji komponentu, gotowy do uruchomienia projekt demonstracyjny i pobranie wersji próbnej.

Online Help — TsgcHTTP2Client Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu.
Projekt demonstracyjny — Demos\20.HTTP_Protocol\07.Apple_Push_Notifications Gotowy do uruchomienia projekt przykładowy. Dostarczany wewnątrz pakietu sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł pierwotnych — tylko ten komponent.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.

Gotowy, aby wysyłać powiadomienia APNs z Delphi?

Pobierz bezpłatną wersję próbną i zintegruj Apple Push Notifications ze swoimi aplikacjami Delphi.