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).
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).
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.
TsgcHTTP2Client + TsgcHTTP_JWT_Client
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
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);
Deux composants coopérants gèrent APNs de bout en bout — framing HTTP/2 et génération de JWT.
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).
Pour les anciens certificats universels, définis TLSOptions.CertFile + Password et vide Authentication.Token.JWT. La poignée de main TLS authentifie la connexion.
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.
Définis Request.CustomHeaders pour apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration selon la documentation d'Apple.
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.
Utilise iohSChannel sur Windows pour un TLS en mode noyau (sans DLL nécessaires) ou iohOpenSSL pour des déploiements serveur multiplateformes.
Sources de référence pour les APIs implémentées par ce composant.
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. | Ouvrir | |
| 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. | Ouvrir | |
| Document technique (PDF) Features, quick start, code samples for Delphi & C++ Builder and primary-source references — this component only. | Ouvrir | |
| Manuel utilisateur (PDF) Manuel exhaustif couvrant chaque composant de la bibliothèque. | Ouvrir |
Questions courantes sur l'envoi de notifications APNs depuis Delphi et C++ Builder.
TsgcHTTP2Client (transport HTTP/2) à un TsgcHTTP_JWT_Client (génération de jeton ES256). Configurez le client JWT avec votre key ID APNs, votre team ID et votre clé privée .p8, liez-le à HTTP2.Authentication.Token.JWT, définissez l'en-tête apns-topic, puis envoyez en POST la charge utile JSON vers https://api.push.apple.com/3/device/<token>.TsgcHTTP_JWT_Client génère des JWT ES256 à partir de votre clé Apple AuthKey_*.p8 et les rafraîchit automatiquement (Apple attend une rotation dans l'heure). Pour l'authentification par certificat héritée, définissez TLSOptions.CertFile et Password et videz Authentication.Token.JWT, afin que la poignée de main TLS authentifie la connexion.TsgcHTTP2Client parle l'API HTTP/2 d'APNs qui a remplacé le protocole binaire retiré. Une seule connexion TLS multiplexe des milliers de pushes par minute sur des flux HTTP/2, et vous lisez Response.Status par appel pour les résultats de livraison. TLS s'exécute via Windows SChannel (iohSChannel) ou OpenSSL (iohOpenSSL).