Apple Push Notifications

Invia notifiche push APNs da Delphi su HTTP/2 verso api.push.apple.com. Supporta l'autenticazione sia tramite certificato sia tramite token (JWT ES256).

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Abbina TsgcHTTP2Client (trasporto HTTP/2) a TsgcHTTP_JWT_Client (generazione di token ES256) per pilotare APNs — la combinazione che Apple consiglia da quando il vecchio protocollo binario è stato dismesso.

Classe del componente

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Protocollo

APNs HTTP/2

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Standard / Professional / Enterprise

Firma un JWT, POST l'alert e osserva lo status HTTP/2

Configura TsgcHTTP_JWT_Client con la tua chiave privata ES256 APNs e i tuoi key/team ID, collegalo a TsgcHTTP2Client.Authentication.Token.JWT e poi invia in POST il payload JSON a /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);

Cosa contiene

Due componenti che cooperano gestiscono APNs end-to-end — il framing HTTP/2 e la generazione dei JWT.

Autenticazione a token

JWT ES256 firmati con la tua chiave privata Apple AuthKey_*.p8. Il client JWT rinnova il token automaticamente ogni 40 minuti (Apple si aspetta la rotazione entro un'ora).

Autenticazione a certificato

Per i certificati universali legacy, imposta TLSOptions.CertFile + Password e azzera Authentication.Token.JWT. L'handshake TLS autentica la connessione.

Production / Sandbox

Punta l'URL a api.push.apple.com per la produzione o a api.development.push.apple.com per il sandbox — stesso componente, solo un host diverso.

apns-topic e header

Imposta Request.CustomHeaders per apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration secondo la documentazione Apple.

Multiplexing HTTP/2

Una singola connessione TLS invia migliaia di push al minuto — gli stream HTTP/2 multiplexano le richieste. Controlla Response.Status per ogni chiamata per i risultati di consegna.

SChannel o OpenSSL

Usa iohSChannel su Windows per TLS in modalità kernel (nessuna DLL necessaria) o iohOpenSSL per deployment server multipiattaforma.

Specifiche e riferimenti

Fonti autorevoli per le API implementate da questo componente.

Documentazione e demo

Vai al riferimento del componente, scarica il progetto demo pronto all'uso e prova la versione trial.

Guida online — TsgcHTTP2Client Riferimento completo di proprietà, metodi ed eventi per questo componente.
Progetto demo — Demos\20.HTTP_Protocol\07.Apple_Push_Notifications Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente.
Manuale utente (PDF) Manuale completo che copre tutti i componenti della libreria.

Pronto a inviare push APNs da Delphi?

Scarica la versione di prova gratuita e integra le Apple Push Notifications nelle tue applicazioni Delphi.