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 |
Dúvidas comuns sobre o envio de notificações APNs a partir do Delphi e C++ Builder.
TsgcHTTP2Client (transporte HTTP/2) com um TsgcHTTP_JWT_Client (geração de tokens ES256). Configure o JWT client com seu key ID, team ID e chave privada .p8 do APNs, vincule-o a HTTP2.Authentication.Token.JWT, defina o header apns-topic e, em seguida, faça um POST do payload JSON para https://api.push.apple.com/3/device/<token>.TsgcHTTP_JWT_Client gera JWTs ES256 a partir da sua chave AuthKey_*.p8 da Apple e os atualiza automaticamente (a Apple espera rotação dentro de uma hora). Para a autenticação legada por certificado, defina TLSOptions.CertFile e Password e limpe Authentication.Token.JWT, de modo que o handshake TLS autentique a conexão.TsgcHTTP2Client fala a API HTTP/2 do APNs que substituiu o protocolo binário descontinuado. Uma única conexão TLS multiplexa milhares de pushes por minuto sobre streams HTTP/2, e você lê Response.Status por chamada para os resultados de entrega. O TLS roda através do Windows SChannel (iohSChannel) ou OpenSSL (iohOpenSSL).