apns是苹果官方的消息推送机制。具体apns原理步骤,推送证书的制作就不详叙了。网上可以搜到很多这方面的文章。主要说说前后端Delphi实现,操作系统ios13.6。
客户端:
客户端工作就是获得一个DeviceToken。在主界面放上一个EMSProvider和PushEvents。PushEvents1设置Provider为EMSProvider,然后在OnDeviceTokenReceived事件中就可以获得DeviceToken了,是不是很简单!~~
FDeviceToken := PushEvents1.DeviceToken;
服务端:
apns推送分为证书和token推送,这里选择了token推送。
token推送需要p8.pem证书,客户端Devicetoken,TeamId,keyId。将这些内容打包加密后post到apns苹果服务器就行了。具体打包格式可以到官网上去看一下。这里用delphi制作了一个dll,实现了jwt加密打包后的数据。只需要一个函数就能完成发送消息。
function sendNotificationApns(token, app_id, key_id, team_id, content : string; isSandBox:boolean; var ErrMsg:string): boolean;stdcall; external 'apnsDelphi.dll';
......
implementation
......
procedure TForm1.Button1Click(Sender: TObject);
var
err:String;
begin
sendNotificationApns(‘客户端token’, ‘com.iphone.xxx’, keyId, teamId, memo1.Lines.Text, radioButton1.Checked, err);
end;
keyId是证书Id,在生成证书文件的时候获得。
teamId是开发者账号团队Id,在开发者中心可以看到。
注意:
推送证书需要导出成pem格式(具体请百度),并且文件名为p8.pem,与dll一起放在服务端应用根目录下。同时因为要访问https,需要下载libeay32.dll和libssl32.dll,也放在根目录下。