Apple Push (APNs) pour Delphi & C++ Builder | eSeGeCe

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.

Questions fréquentes sur Apple Push

Questions courantes sur l'envoi de notifications APNs depuis Delphi et C++ Builder.

Associez un 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>.
Les deux. Pour l'authentification par jeton, 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.
Oui. 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).
sgcWebSockets prend en charge Delphi 7 jusqu'à la dernière version de Delphi et les versions de C++ Builder correspondantes, sous Windows, macOS, Linux, iOS et Android. Téléchargez la version d'essai gratuite pour intégrer les Apple Push Notifications dans votre propre projet.

Prêt à envoyer des push APNs depuis Delphi ?

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