您现在的位置是:首页 > 技术教程 正文

unipush 2.0流程及踩坑记录(后端调用接口,前端推送)

admin 阅读: 2024-03-26
后台-插件-广告管理-内容页头部广告(手机)

unipush 在线离线示例

在DCLOUD开发者中心里面创建unipush的应用

如果遇到选择Android 包名后没有自动生成Android 应用签名的话,就是下图这样的。

这个情况多半就是通过直接创建云端证书造成的,没有编辑应用信息

没有云端证书的看这里

在我的应用,找到需要unipush的应用,点击编辑,然后把云端证书里面的内容填进去就好了

云服务空间,直接按照操作搞吧,这个不是我搞得。关联好后然后点击开通

在hbuilder里面找到项目,鼠标右键点击项目名称,创建云函数

这一步可以看官方文档,挺详细的。一定要好好写这一步,然后后端请求接口的时候才会有回调

添加push模块,设置targetSdkersion(targetSdkersion过高有些手机运行不了)

找到刚刚添加的push模块,设置云函数(下面是我的代码截图,上面是官方截图,所以文件名不一样,但是内容都是一样的)

  1. 'use strict';
  2. const uniPush = uniCloud.getPushManager({
  3. appId: "__UNI__A4C6D3499"
  4. })
  5. exports.main = async (event) => {
  6. let obj = JSON.parse(event.body)
  7. const res = await uniPush.sendMessage({
  8. "push_clientid": obj.cids, // 设备id,支持多个以数组的形式指定多个设备,如["cid-1","cid-2"],数组长度不大于1000
  9. "title": obj.title, // 标题
  10. "content": obj.content, // 内容
  11. "payload": obj.data, // 数据
  12. "force_notification": true, // 服务端推送 需要加这一句
  13. "request_id": obj.request_id //请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失
  14. })
  15. return res //一定要return回去
  16. };

 最后上传部署

在app.vue里面写入这个两行代码,一个是点击推送消息的事件,一个是获取用户cid信息(用于给指定用户推送,例如聊天信息,订单信息,都是指定用户)。然后一定要先检测系统权限,直接复制这个大佬的代码 。有些手机首次进入又会自动提醒是否消息通知,这个自己搞搞兼容吧。自定义基座需要手动打开这个权限。 链接地址

  1. // #ifdef APP-PLUS
  2. plus.push.addEventListener("click", function(msg) {
  3. console.log(msg);
  4. uni.switchTab({
  5. url:'/pages/user/index'
  6. })
  7. }, false);
  8. uni.getPushClientId({
  9. success: res => {
  10. console.log(res.cid);
  11. }
  12. })
  13. this.getQuanxian()
  14. // #endif

获取通知权限还有一个方法就是官方文档

  1. // #ifdef APP-PLUS
  2. const notificationAuthorized = uni.getAppAuthorizeSetting().notificationAuthorized
  3. if(notificationAuthorized=='denied'){
  4. uni.showModal({
  5. title: '提示',
  6. content: '是否前往打开通知权限',
  7. success: res => {
  8. if (res.confirm) {
  9. this.openTongZhi()
  10. } else if (res.cancel) {
  11. console.log('用户点击取消');
  12. }
  13. }
  14. })
  15. }
  16. // that.getQuanxian()
  17. // #endif

然后勾选配置文件(如果要配置离线,请先看离线通知标题那部分)

有些手机运行自定义基座失败,这个设置成28试一下

打自定义基座包,然后运行

然后打包一定是自定义基座才能本地调试

检测基座

运行自定义基座之前,得先卸载手机里面之前所有相关应用,然后拿到cid检测一下,能获取到信息就好了

配置云函数url化(作用是,后端直接调接口然后进行推送)

这个参数就是一一对应的!!!

设备在线离线都是走这个接口!!!

离线自定义铃声

我搞的时候,小米不支持,然后主要是为了离线通知有声音

自定义推送铃声和渠道 - DCloud 插件市场

导入插件后使用

channelId是

要是没有声音 soundName设置成"", 只要导入了这个 有系统铃声就认命吧

离线通知(app需要上线的话看这个吧)

配置文件搜索

直接到每个厂商平台,上图注意事项那里有厂商地址。搜索消息推送开通就好了,我们是大多平台都先上线了的。华为可以不用上线,直接申请。

像华为这种,你直接找对应字段填进来就好了。

总结及遇到的坑

0.在dcloud里面,创建unipush2.0的时候,找到Android 包名但是没自动生成Android 应用签名。

点击修改完善一下

1.先勾选unipush2.0 不搞离线推送,然后在app.vue里面获取cid好测试。然后创建云函数。

2.自定义基座不能运行:卸载之前手机上所有相关的包,重新运行。要不然就是targetSdkersion设置低一点。

3.后端发送请求时没有反应或者报错:没有反应可能是uniapp云函数那里配置有问题,或者是get请求或者post请求都可以,只是请求体不一样。然后就是云函数接受的地方和发送请求的地方参数得一样哦

4.没有收到推送消息:先看手机消息通知权限是否打开啊,然后打开app找到通过uni.getPushClientId获取的cid,然后去dcloud里面检查。或者勾选上离线推送再打包试一下

看能不能查询设备状态,在线都查询不到的话,看看哪个步骤错了,或者卸载之前的app,重新打自定义基座包。可以查询离线,但是收不到消息的话,看下这里

5.修改配置文件了配置文件啥的,然后运行不了,卸载手机上的,重新打自定义包啊

6.离线有些手机没有声音。各个厂商配置不一样嘛,唉这个问问个推技术吧,厂商更新了他们知道

7.个推官方文档,叫你怎样集成各个厂商(主要是离线推送)。链接地址

最后最后:个推技术客服真的很友好,不懂得可以直接问他们

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索