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 |