Apple Push Notifications

Envoie des notifications push APNs depuis Delphi sur HTTP/2 vers api.push.apple.com. Prend en charge l'authentification par certificat et par token (JWT ES256).

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Associe TsgcHTTP2Client (transport HTTP/2) à TsgcHTTP_JWT_Client (génération de tokens ES256) pour piloter APNs — la combinaison recommandée par Apple depuis le retrait de l'ancien protocole binaire.

Classe du composant

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Protocole

APNs HTTP/2

Plateformes

Windows, macOS, Linux, iOS, Android

Édition

Standard / Professional / Enterprise

Signe un JWT, POSTe l'alerte, surveille le statut HTTP/2

Configure TsgcHTTP_JWT_Client avec ta clé privée ES256 APNs et tes key/team IDs, relie-le à TsgcHTTP2Client.Authentication.Token.JWT, puis envoie la charge utile JSON en POST à /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);

Ce qu’il y a à l’intérieur

Deux composants coopérants gèrent APNs de bout en bout — framing HTTP/2 et génération de JWT.

Authentification par token

JWTs ES256 signés avec ta clé privée Apple AuthKey_*.p8. Le client JWT rafraîchit le token automatiquement toutes les 40 minutes (Apple attend une rotation dans l'heure).

Authentification par certificat

Pour les anciens certificats universels, définis TLSOptions.CertFile + Password et vide Authentication.Token.JWT. La poignée de main TLS authentifie la connexion.

Production / Bac à sable

Pointe l'URL vers api.push.apple.com pour la production ou api.development.push.apple.com pour le bac à sable — même composant, simplement un hôte différent.

apns-topic + en-têtes

Définis Request.CustomHeaders pour apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration selon la documentation d'Apple.

Multiplexage HTTP/2

Une seule connexion TLS envoie des milliers de pushes par minute — les flux HTTP/2 multiplexent les requêtes. Inspecte Response.Status à chaque appel pour les résultats de livraison.

SChannel ou OpenSSL

Utilise iohSChannel sur Windows pour un TLS en mode noyau (sans DLL nécessaires) ou iohOpenSSL pour des déploiements serveur multiplateformes.

Spécifications et références

Sources de référence pour les APIs implémentées par ce composant.

Documentation et démos

Lien direct vers la référence du composant, récupère le projet de démo prêt à exécuter et télécharge l’essai.

Aide en ligne — TsgcHTTP2Client Référence complète des propriétés, méthodes et événements de ce composant.
Projet de démo — Demos\20.HTTP_Protocol\07.Apple_Push_Notifications Projet d’exemple prêt à exécuter. Livré dans le paquet sgcWebSockets — télécharge l’essai ci-dessous.
Document technique (PDF) Features, quick start, code samples for Delphi & C++ Builder and primary-source references — this component only.
Manuel utilisateur (PDF) Manuel exhaustif couvrant chaque composant de la bibliothèque.

Prêt à envoyer des push APNs depuis Delphi ?

Télécharge l'essai gratuit et intègre Apple Push Notifications à tes applications Delphi.