Apple Push Notifications
Envie notificações push APNs a partir do Delphi via HTTP/2 para api.push.apple.com. Suporta autenticação por certificado e por token (JWT ES256).
Envie notificações push APNs a partir do Delphi via HTTP/2 para api.push.apple.com. Suporta autenticação por certificado e por token (JWT ES256).
Combine TsgcHTTP2Client (transporte HTTP/2) com TsgcHTTP_JWT_Client (emissão de token ES256) para acionar o APNs — a combinação recomendada pela Apple desde a aposentadoria do protocolo binário legado.
TsgcHTTP2Client + TsgcHTTP_JWT_Client
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Configure TsgcHTTP_JWT_Client com sua chave privada ES256 do APNs e os IDs de chave/equipe, vincule-o a TsgcHTTP2Client.Authentication.Token.JWT e faça POST do payload JSON para /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);
Dois componentes cooperantes tratam o APNs de ponta a ponta — framing HTTP/2 e emissão de JWT.
JWTs ES256 assinados com sua chave privada Apple AuthKey_*.p8. O cliente JWT renova o token automaticamente a cada 40 minutos (a Apple exige rotação em menos de uma hora).
Para certificados universais legados, defina TLSOptions.CertFile + Password e limpe Authentication.Token.JWT. O handshake TLS autentica a conexão.
Aponte a URL para api.push.apple.com em produção ou api.development.push.apple.com para o sandbox — mesmo componente, apenas host diferente.
Defina Request.CustomHeaders para apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration conforme a documentação da Apple.
Uma única conexão TLS envia milhares de notificações por minuto — os streams HTTP/2 multiplexam as requisições. Verifique Response.Status por chamada para os resultados de entrega.
Use iohSChannel no Windows para TLS em modo kernel (sem DLLs necessárias) ou iohOpenSSL para implantações de servidor multiplataforma.
Fontes autoritativas das APIs que este componente implementa.
Acesse a referência do componente, obtenha o projeto demo pronto para executar e baixe a versão de avaliação.
| Ajuda online — TsgcHTTP2Client Referência completa de propriedades, métodos e eventos deste componente. | Abrir | |
| Projeto de demonstração — Demos\20.HTTP_Protocol\07.Apple_Push_Notifications Projeto de exemplo pronto para executar. Acompanha o pacote sgcWebSockets — baixe a versão de avaliação abaixo. | Abrir | |
| Documento técnico (PDF) Recursos, início rápido, exemplos de código para Delphi & C++ Builder e referências de fontes primárias — somente este componente. | Abrir | |
| Manual do usuário (PDF) Manual abrangente cobrindo todos os componentes da biblioteca. | Abrir |