赞
踩
有项目需要使用uniapp的unipush功能,由于第一次开发,网上查了好多教程,最终完美实现,这里记录一下流程。
这里是一些官方的文档,有兴趣的可以去学习一下。
uni-app官方文档入口
https://uniapp.dcloud.io/api/plugins/push
uniPush官方使用指南
https://ask.dcloud.net.cn/article/35622
个推官方文档入口
https://docs.getui.com/
推送H5+API接口:
https://www.html5plus.org/doc/zh_cn/push.html
1.UNIAPP已经集成了第三方应用个推SDK,APP运行后获取CID返回给服务器并保存;
2.服务器端调用个推的API进行消息推送,个推SDK将接收到的推送消息回调给App进行处理。
个推提供JAVA、C#、PHP、Python等多种语言版本的服务端API SDK,可以和各种第三方应用服务器技术架构进行对接。为了最大程度提高消息推送性能,第三方开发者需要根据业务需求合理选择消息推送形式。本次记录是利用Thinkphp为后台框架的对接,实现单推、多推和群推的功能。详细更多介绍请参考官方文档:http://docs.getui.com/
1. 平台配置
UNIPUSH开通申请,这部分不是难点参考官方教程在dcloud中配置各个厂商的api和secret。官方申请开通教程传送门:https://ask.dcloud.net.cn/article/35716
这里要说一下为啥要配置厂商呢?APP用户不可能实时在线,第三方的消息推送会被阻挡,最好的方式就是按照厂商的要求接入各个推送服务。这样做在app关闭的时候,可以通过厂商的服务器推送消息给手机通知系统。非常方便,这部分DCLOUD已经帮你做好了。你只需要注册下各个厂商的开发平台,填写到unipush的配置中就可以。
2. uni-app权限配置
Hbuilder的基座配置的信息都是dcloud的,所以用别人的app是没办法测试推送服务的。可以通过以下两种方式解决这个问题:
温馨提示: 可以先体验 uni push 后台界面推送(帮助理解推送的过程)
相要在APP中正确收到推送信息,还需要配置应用信息,android包名和应用的签名必须要和应用的一样不然收不到,签名生成可参考我的另外一片文章:
uniapp开发Android平台签名证书(.keystore)生成全流程
3、获取应用配置
uniPush配置好后查看应用的配置,包含appid、AppKey、MasterSecret等信息。
记录应用的appid、AppKey、MasterSecret,会在服务端开发中用到。具体代码请继续往下阅读吧
注意:代码位置只能在app.vue的onLaunch中,其他地方可能会有问题。
//#ifdef APP-PLUS /* 客户端的基本信息,可以获取到客户端的CID 测试的时候会用到*/ var info = plus.push.getClientInfo(); var client_id = info.clientid; console.log( JSON.stringify( info ) ); console.log( 'CID:'+client_id ); /* 使用:H5+的方式监听,实现推送 */ plus.push.addEventListener("click", function(msg) { console.log("click:"+JSON.stringify(msg)); console.log(msg.payload); console.log(JSON.stringify(msg)); //这里可以写跳转业务代码 uni.navigateTo({ url: 'pages/user/user?参数' }) }, false); // 监听在线消息事件 plus.push.addEventListener("receive", function(msg) { //这里可以写跳转业务代码 console.log("recevice:"+JSON.stringify(msg)) }, false); //#endif
这里listener监听的两种事件:
本实例中后端代码是整合Thinkphp+RestAPI V2的代码。
composer require getuilaboratory/getui-pushapi-php-client-v2
本次项目并未使用Composer依赖安装,下载安装到extend目录下。在extend目录下新建目录getui/sdk,并解压文件到getui/sdk目录下。
<?php namespace getui; use think\Loader; class GeTui { private $host = 'https://restapi.getui.com'; //测试 private $appkey = ''; private $appid = ''; private $mastersecret = ''; private $token = null; private $taskId = null; private $api = null; private $pakename ='你的APP包名'; /** * 初始化 */ public function __construct($appid=null,$appkey=null,$mastersecret=null){ $this->init($appid,$appkey,$mastersecret); $this->__loader(); } /** * 加载SDK文件,只需引入GTClient.php文件即可 * 实例化个推api接口 */ private function __loader() { require_once(dirname(__FILE__) . '/'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。