Apple Push Notifications - 基于 Token 的 APNs 连接(第 3/4 部分)

· 功能

本文将介绍如何配置 sgcWebSockets JWT 客户端,向 Apple 推送通知服务器发送经过身份验证的 HTTP/2 请求。

使用无状态身份验证 Token 保护与 Apple 推送通知服务(APNs)的通信安全。

首先您需要从 Apple 开发者账户获取加密密钥密钥 ID。注册成功后,您将获得一个 10 位字符的密钥 ID 以及 .p8 扩展名的身份验证 Token 签名密钥。

您必须使用 sgcWebSockets JWT 客户端 以 ES256 算法生成 JWT。不应为每个 HTTP/2 请求生成新 token,token 的刷新不得早于 20 分钟,也不得晚于 60 分钟。

配置 JWT 客户端 

请使用以下值配置 JWT 客户端:

使用基于 Token 的连接时,需要发送 apns-topic,其值为应用的 bundle ID/app ID(示例:com.example.application)。

oHTTP := TsgcHTTP2Client.Create(nil);
oHTTP.TLSOptions.IOHandler := iohOpenSSL;
oJWT := TsgcHTTP_JWT_Client.Create(nil);
oHTTP.Authentication.Token.JWT := oJWT;
oJWT.JWTOptions.Header.alg := jwtES256;
oJWT.JWTOptions.Header.kid := 'apple key id';
oJWT.JWTOptions.Payload.iss := 'issuer';
oJWT.JWTOptions.Payload.iat := StrToInt64(GetDateTimeUnix(Now, False));
oJWT.JWTOptions.Algorithms.ES.PrivateKey.LoadFromFile('AuthKey_**.p8');
oJWT.JWTOptions.RefreshTokenAfter := 60*40;
oHTTP.Request.CustomHeaders.Clear;
oHTTP.Request.CustomHeaders.Add('apns-topic: com.example.application');