最近在做app消息推送,记录下离线推送接入过程中遇到的问题。详细步骤请参考官网文档:uni-push 2.0 快速接入指南
问题一、查询不到 device token
文档原文中:
1.4.2 校验厂商离线推送是否集成成功
输入上方获取的 cid ,查询到对应的 Device Token 则说明云打包 “离线推送” 成功,同时支持离线推送。
如果未查询到 device token,则只能 “在线推送” 。若需要使用 “离线推送” 请重新检查 ”1.2 开通离线厂商推送服务“ 。
1、应用中使用的厂商是华为,此时登录华为开发者平台,检查对应厂商平台上的推送服务状态是否是开启状态。
2、在Dcloud后台【Uni Push】-【厂商推送设置】中保存好厂商参数,并用自有证书提交云打包,且需要打正式包,再获取cid去查询是否有返回。
3、如果还是获取不到,可以使用adb安卓调试工具获取具体的错误码。调试环境配置请参考安装教程
4、手机连接电脑,手机需开启开发者调试模式,此时先不打开app
5、Windows执行示例:如下图,回车执行后打开app
可以看到此时返回的错误码为6003,可以检查对应厂商的华为通用错误码
(其他厂商请自行百度)
若未返回任何带有厂商标识的日志,说明厂商推送服务还未置于您app应用内,请重新检查厂商服务开通、配置、云打包相关步骤。
6、查看华为通用错误码后,发现6003代表应用的证书指纹和华为平台上的配置不一致。可以解压前面打出的自定义调试基座包,注意不是正式包,是自定义调试基座包。
使用RAR打开apk包
找到CERT.RSA文件(如果没有这个文件,说明这个不是自定义调试基座包),用jdk中自带的keytool工具查看应用的证书指纹。
对比华为平台上的证书指纹,如果确实不一致,则需要修改华为应用配置。
修改之后过一会就能生效了。此时再尝试用cid去查询。
问题二、获取到device token后,执行云函数还是收不到消息
我遇到这个问题是因为手机没有开启提醒,实际上消息收到了只是没有弹窗,需要下拉通知栏才能看到。文章来源:https://www.toymoban.com/news/detail-834620.html
问题三、Java端如何调用unipush的云函数去发送通知
1、云函数调试成功后需要上传部署
打开云函数的服务空间,点详情进入编辑和查看url:
编辑完成后复制路径,使用postman等工具测试:
参数说明:
push_clientid:在uni-app客户端获取到的客户端推送标识push_clientid,需要群发的话可以传数组
request_id:区分不同的https请求,长度10-30位,主要用来在unipush后台查询云函数的调用情况,我直接用的时间戳
options:各厂商配置的参数
postman测试通过后就可以在Java里面发送https请求去发送通知了。
注意需要忽略证书的验证,此处就不赘述了可以自行百度。文章来源地址https://www.toymoban.com/news/detail-834620.html
到了这里,关于unipush2.0实现离线推送(华为手机)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!