sgcWebSockets 库在服务端和客户端组件中均支持 HTTP/2 协议,Apple 推送通知仅允许使用 HTTP/2 协议从服务器提供商发送推送通知,因此以下文章将介绍如何使用 sgcWebSockets 库发送推送通知。
服务器提供商(负责向用户设备发送推送通知的一方)需要知道消息将被送达的设备 token。Device Token 是与设备和应用程序关联的唯一标识符。
使用 Rad Studio,您可以通过 FMX.PushNotification.iOS 单元获取设备 token ID。概念非常简单:设备与 Apple 服务器建立新连接并获取 DeviceToken,服务器提供商将使用该 token 发送通知。以下是获取 Device Token 的 Delphi 示例代码。
Delphi 代码
oPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS);
oPushConnection := TPushServiceConnection.Create(oPushService);
oPushConnection.Active := True;
oPushConnection.OnChange := OnChangeEvent;
oPushConnection.OnReceiveNotification := OnReceiveNotificationEvent;
vDeviceId := oPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID];
vDeviceToken := oPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];
procedure OnChangeEvent(Sender: TObject; AChange: TPushService.TChanges);
begin
memoLog.Lines.Add('OnChange');
end;
procedure OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification);
begin
memoLog.Lines.Add('DataKey=' + ANotification.DataKey);
memoLog.Lines.Add('JSON=' + ANotification.JSON.ToString);
memoLog.Lines.Add('DataObject=' + ANotification.DataObject.ToString);
end;
