当前位置:   article > 正文

uni-app开发之thinkphp下的unipush全流程实现_uniapp unipush thikphp6

uniapp unipush thikphp6

背景

有项目需要使用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是没办法测试推送服务的。可以通过以下两种方式解决这个问题:

  • 云打包时打包成为自己的app后测试
  • 制作自定义的基座(很简单),这个基座的信息都是自己的,所以可以测试运行的时候选择自定制基座,或者直接云打包后的的apk安装到手机测试。

在这里插入图片描述

温馨提示: 可以先体验 uni push 后台界面推送(帮助理解推送的过程)

相要在APP中正确收到推送信息,还需要配置应用信息,android包名和应用的签名必须要和应用的一样不然收不到,签名生成可参考我的另外一片文章:
uniapp开发Android平台签名证书(.keystore)生成全流程
在这里插入图片描述
3、获取应用配置
uniPush配置好后查看应用的配置,包含appid、AppKey、MasterSecret等信息。
获取应用配置
记录应用的appid、AppKey、MasterSecret,会在服务端开发中用到。具体代码请继续往下阅读吧

四、APP端代码

注意:代码位置只能在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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

这里listener监听的两种事件:

  • “click”:从系统消息中心点击消息启动应用事件;
  • “receive”:应用从推送服务器接收到推送消息事件。

五、后端代码(PHP)

本实例中后端代码是整合Thinkphp+RestAPI V2的代码。

  1. 下载个推SDK,下载地址:https://docs.getui.com/getui/server/rest_v2/service_sdk/,SDK支持Composer项目依赖。

composer require getuilaboratory/getui-pushapi-php-client-v2

在这里插入图片描述
本次项目并未使用Composer依赖安装,下载安装到extend目录下。在extend目录下新建目录getui/sdk,并解压文件到getui/sdk目录下。

在这里插入图片描述

  1. 创建GeTui.php文件
    在目录extend/getui/下创建GeTui.php文件,代码如下:
<?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__) . '/' 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/280512
推荐阅读
相关标签
  

闽ICP备14008679号