银色子弹
银色子弹
  • 发布:2019-11-01 21:19
  • 更新:2021-03-18 17:45
  • 阅读:3648

unipush实践分享

分类:uni-app

阅读前请先参照官方文档,熟悉下unipush的整体方案

开通unipush

应用管理后台找到要开通unipush的应用(账号第一次开通unipush需要认证)认证完毕,账号下的应用就可以直接使用unipush了

推送测试

unipush开通后,在后台可以创建通知消息和透传消息。两种消息的区别官方已经做了详细说明,不清楚的可以自己推送下试试。为了保证ios和android的一致性,建议放弃通知消息,统一使用透传消息。
客户端准备:

let info = plus.push.getClientInfo();//获取客户端clientId(这个id每次重新安装包就会刷新)  
console.log(info)  
 plus.push.addEventListener('receive', (message)=>{//监听透传消息  
    plus.nativeUI.toast('push receive');  
    plus.push.createMessage(message.content)//将详细显示到系统通知栏(这里如果有不需要系统展示的,可以和后端沟通好,通过message里的字段标识不显示就好)  
});  

应用在线

应用在线的时候测试,可以打包制作自定义基座调试(云打包的时候有个选项,制作自定义基座),关于自定义基座。这样避免了多次打包的繁琐,在线的时候推送会通过个推来发送,这个基本上没有任何问题,都能正常收到。

应用离线

应用离线分为两种情况:
一种时并没有杀掉进程,比如手机长时间息屏,下次打开应用并没有重启(也就时没触发引用的onLaunch),只是唤醒到了前台。‘
另一种情况是进程被杀掉了,应用就是离线的状态。
对于第一种情况:这个clientId已经是离线状态了,即便你这时候前台唤醒了,他也不会触发在线。一个方案是在应用onShow的时候重新加载一次推送的sdk,这样达到clientId重新在线的目的,但这种方案总是让人觉得是不得已的妥协,那么有没有更好的方案呢?
如果我们能解决第二种情况的推送问题,也就是离线的推送,那第一种情况也就可以不管了。unipush很好的一点就是这里,他可以集成多个厂商的推送,这样即便应用时在离线状态下,也可以收到推送通知。huilder提供的厂商推送应用创建配置流程,文档有点老,可能和现在的厂商实际页面有出入,参考就好。

小米厂商渠道配置

unipush后台有小米开放平台的快捷入口,注册开发账号(我用的是公司主体注册的),创建手机应用,填写应用名称和包名(一定要和uniapp的包名一致),然后会提示是否开启消息推送服务,选择启用,然后到应用信息里,复制 AppID,AppKey,AppSecret粘贴到unipush后台即可。

华为厂商渠道配置

同小米,先注册开发者账户。这里吐槽下hbuilder的注册文档有点老了,和现在的页面不太能对的上。应用服务->开发服务->PUSH
新建APK,然后开通推送服务,他会提示包名未填写,那需要先到开发->概览页面->手动输入包名。包名输入完毕一定要填写SHA256签名,然后保存后最好刷新一下(我试了好多次才保存上)。填写完成后再去开通推送服务,然后到概览里复制AppID,AppSecret到unipush后台。至此配置完成

离线推送测试

虽然官方说自定义基座可以测试推送,但我本人测试,离线推送还是要打包来测试才行,之前也是自定义基座,但怎么都收不到。打包后记得将应用的通知权限给到最高(锁屏允许通知等等)然后杀掉进程,在后台发送透传消息,群发,这时候会让填写第三方推送的intent;
把包名替换为你自己的应用名称,其他的照抄即可
intent:#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush;package=你的包名;component=你的包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试;S.content=测试;S.payload=test;end
然后点击群发,不出意外的话,你的app应该已经收到了离线通知~

因为目前手边只有小米和华为,所以其他三个厂商的还没有进行测试,不过估计应该都可以

1 关注 分享
9***@qq.com

要回复文章请先登录注册

河南dev

河南dev

回复 木盒关系户 :
gun 你大爷,你老木,闭上你的臭嘴吧
2021-03-18 17:45
木盒关系户

木盒关系户

回复 河南dev :
gun你大爷,收费倪老木
2021-03-18 10:41
河南dev

河南dev

回复 木盒关系户 :
你 gun 吧
2021-03-18 09:44
河南dev

河南dev

回复 木盒关系户 :
碍你事了?
2021-03-18 09:43
木盒关系户

木盒关系户

回复 河南dev :
gun,ok?
2021-03-10 18:23
河南dev

河南dev

unipush付费解答,欢迎加q 476988188
2020-08-07 17:36
S1ow

S1ow

1、当app处于后台状态时,推送消息,点击应用图标切换回前台状态后,自动触发监听的click点击事件,在收到消息的时候就触发了点击事件
2、当将app进程杀掉之后,推送消息,点击应用图标重新进入应用,也会自动触发监听的click事件,在启动之后触发了点击事件
备注:click事件写在app.vue中的onLaunch中

请问:

就是这样设计的?还是bug?v3编译器与非v3编译器下效果一样。
2020-03-18 13:26
5***@qq.com

5***@qq.com

希望还有回复吧,请教一下,透传得离线系消息在通知栏都能收到了,但是点击通知栏无法唤起app,这个是什么原因啊?
2020-02-25 21:57
小权

小权

回复 泽西大少 :
解决了。我把小米那边应用删除重新创建了一次,uniPush也对应配置了一次。然后重新打包安装测试,就行了。我也不知道之前哪里出了问题
2019-12-12 11:35
泽西大少

泽西大少

回复 小权 :
兄弟,解决了吗?我华为离线可以收到没问题,但小米也配置了,离线还是收不到
2019-12-12 10:59