
鸿蒙开发远程推送详解 原创 精华
大家好,今天分享一下鸿蒙开发中的远程推送通知。
之前分享过本地推送通知的方式,但是通过服务器远程推送通知是更加常见的推送方式,下面为大家分享详细的开发步骤。
移动端
先说移动开发端,首先要在移动端添加权限:
第二部,需要获取推送服务的Token,方法是:
这里的Token是可能随时变化的,所以获取方法最好写在onCreate()方法中,并同时将Token上传到服务端。
第三步,请求推送通知权限,这一方法可以写在onWindowStageCreate方法下:
最后移动端还需要绑定应用内账号匿名标识。什么意思呢,就是在移动端先自主生成一个唯一的profileId,它类似userid,但是不建议直接使用userid,将profileId上传到服务端,并且在本地绑定。
它的作用是用户登录后绑定profileId就会收到远端的推送,反之用户退出时随之解绑profileId后就不会再收到推送,绑定和解绑的具体代码如下:
这样移动端的工作基本完成了,接下来是服务端。
服务端
服务端所有的工作就配置header和body去完成推送接口的请求工作,它的请求信息是这样的:
可以看到,在上面的请求中我们还缺少一些信息,首先是URL中的projectId,它表示项目ID,登录AGC网站,选择“开发与服务”,在项目列表中选择对应的项目,左侧导航栏选择“项目设置”,在该页面获取。
接下来是header中的参数Authorization,它是JWT格式的字符串,由三部分使用字符’.’拼接组成,分别是Header、Payload和Signature。
Header和Payload都是对应的结构体生成的Base64编码,Header的结构体是这样的:
其中kid是服务账号密钥文件中key_id字段,Payload的结构体如下:
其中iss是服务账号密钥文件中sub_account字段。iat是当前时间戳,exp则是时间戳加3600后的值。
最后,Signature是由Header和Payload进行Base64编码后,由’.’拼接,使用SHA256withRSA/PSS算法计算得来。
Request Body中的profileId和token我们在上面已经说过,配置好所有的请求头和请求参数就可以调用接口进行推送了。
