uni-app的unipush实现通知栏推送服务全过程「建议收藏」

uni-app的unipush实现通知栏推送服务全过程「建议收藏」背景说明文档这个事情官方应该提供出来,可惜官方觉得是多余的,免费的东西凭啥给你做好。于是我在这里叙述一下实现消息通知推送的步骤。uni-app官方文档入口https://uniapp.dcloud.io/api/plugins/pushuniPush官方使用指南https://ask.dcloud.net.cn/article/35622推送H5+API接口:https://www….

大家好,又见面了,我是你们的朋友全栈君。

背景

说明文档这个事情官方应该提供出来,可惜官方觉得是多余的,免费的东西凭啥给你做好。于是我在这里叙述一下实现消息通知推送的步骤。

uni-app官方文档入口
https://uniapp.dcloud.io/api/plugins/push

uniPush官方使用指南
https://ask.dcloud.net.cn/article/35622

推送H5+API接口:
https://www.html5plus.org/doc/zh_cn/push.html

基础环境准备

2.1 DCLOUD平台配置

参考官方教程在dcloud中配置各个厂商的api和secret,这部分不是难点,有问题留言。
https://ask.dcloud.net.cn/article/35716
在这里插入图片描述

为啥要配置厂商呢:
为了在app关闭的时候,可以通过厂商的服务器推送消息给手机通知系统。第三方的消息推送会被阻挡,最好的方式就是按照厂商的要求接入各个推送服务。庆幸的事情,这部分DCLOUD已经帮你做好了。你只需要注册下各个厂商的开发平台,按到appid和secret登录dcloud后台即可。
在这里插入图片描述

2.1 Uni-app权限配置

在这里插入图片描述

2.3 准备自定制测试基座或者云打包

Hbuilder的基座配置的信息都是dcloud的,所以用被人的app是没办法测试推送服务的。解决这个问题有两种
1,云打包时打包成为自己的app后测试
2,制作自定义的基座(很简单),这个基座的信息都是自己的,所以可以测试
运行的时候选择自定制基座,或者直接云打包后的的apk安装到手机测试。

以上就准备好了基本环境

3 体验推送(帮助理解推送的过程)

3.1 APP端代码

代码位置只能在app.vue的onLaunch中,其他地方可能会有问题。

 //#ifdef APP-PLUS  
			 var info = plus.push.getClientInfo();
			console.log( JSON.stringify( info ) );
			 /* 5+  push 消息推送 ps:使用:H5+的方式监听,实现推送*/  
			plus.push.addEventListener("click", function(msg) {  
						console.log("click:"+JSON.stringify(msg));  
						console.log(msg.payload);  
						console.log(JSON.stringify(msg));  
						//这里可以写跳转业务代码
					}, false);  
						// 监听在线消息事件    
					plus.push.addEventListener("receive", function(msg) {  
						// plus.ui.alert(2);  
							//这里可以写跳转业务代码
						console.log("recevice:"+JSON.stringify(msg))  
			   }, false);  

		   //#endif  

这里就是官方文档比较恶心的地方,自己生命onpush之类的api废弃了,但是给的demo还是用的废弃的方式。推荐的H5+api却不给demo。要知道demo对我们就是api文档啊。

这里listener监听的两种事件

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

上面方法准备好了app端的基本代码,这段代码实现了从推送中心获取消息的能力。具体的实现方式我们可以先不关注。

3.1 测试消息推送(无需服务器代码)

打开dcloud的后台,打开消息推送,填写消息,并点击预览
在这里插入图片描述
这里填写的cid就是APP代码段获取到的clientId,填入后预览系统提示发送成功。

 var info = plus.push.getClientInfo();
			console.log( JSON.stringify( info ) );

在这里插入图片描述
注意:

  1. 手机必须是云打包或者自定义基座运行的app
  2. 填写正确clientId,这个id定位了你的手机,可以理解为手机的ip。
  3. 手机通知权限要打开,要不你就等到天荒地老吧

服务器端代码java版本

step1:个推sdk导入

<dependency>
    <groupId>com.gexin.platform</groupId>
    <artifactId>gexin-rp-sdk-http</artifactId>
    <version>4.1.0.5</version>
</dependency>

<repositories>
    <repository>
        <id>getui-nexus</id>
        <url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
    </repository>
 </repositories>

java代简单版

下面代码填入后台申请的appId 、appKey 、masterSecret 后运行即可实现上述等同效果。

import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.AppMessage;
import com.gexin.rp.sdk.http.IGtPush;
import com.gexin.rp.sdk.template.NotificationTemplate;
import com.gexin.rp.sdk.template.style.Style0;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class PushTest {

    // STEP1:获取应用基本信息
    private static String appId = "";
    private static String appKey = "";
    private static String masterSecret = "";
    private static String url = "http://sdk.open.api.igexin.com/apiex.htm";

    public static void main(String[] args) throws IOException {

        IGtPush push = new IGtPush(url, appKey, masterSecret);

        Style0 style = new Style0();
        // STEP2:设置推送标题、推送内容
        style.setTitle("请输入通知栏标题");
        style.setText("请输入通知栏内容");
        style.setLogo("push.png");  // 设置推送图标
        // STEP3:设置响铃、震动等推送效果
        style.setRing(true);  // 设置响铃
        style.setVibrate(true);  // 设置震动


        // STEP4:选择通知模板
        NotificationTemplate template = new NotificationTemplate();
        template.setAppId(appId);
        template.setAppkey(appKey);
        template.setStyle(style);


        // STEP5:定义"AppMessage"类型消息对象,设置推送消息有效期等推送参数
        List<String> appIds = new ArrayList<String>();
        appIds.add(appId);
        AppMessage message = new AppMessage();
        message.setData(template);
        message.setAppIdList(appIds);
        message.setOffline(true);
        message.setOfflineExpireTime(1000 * 600);  // 时间单位为毫秒

        // STEP6:执行推送
        IPushResult ret = push.pushMessageToApp(message);
        System.out.println(ret.getResponse().toString());
    }
}

参考文档

DCLOUD完全依赖个推,所以个推的官方文档在uniapp的push模块完全适用。
官方API文档地址:http://docs.getui.com/getui/server/java/guide/
java后端github地址:https://github.com/GetuiLaboratory/getui-pushapi-java-demo
https://www.html5plus.org/doc/zh_cn/push.html#plus.push.PushReceiveCallback
https://ask.dcloud.net.cn/article/35622

感谢这个朋友提供了APP端的入口
https://ask.dcloud.net.cn/article/35630

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137232.html原文链接:https://javaforall.net

(3)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 为了解决linux配置Nginx 只能关闭防火墙才能访问的问题

    为了解决linux配置Nginx 只能关闭防火墙才能访问的问题

    2021年10月13日
    90
  • leetcode 链表相加_数据结构与算法链表

    leetcode 链表相加_数据结构与算法链表给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。/** * Definition for singly-linked list. * struct ListNode { * int val; *

    2022年8月9日
    4
  • 没有人不为真情所动,你若不流泪,我请你吃饭。[通俗易懂]

    没有人不为真情所动,你若不流泪,我请你吃饭。[通俗易懂]我是哭了好几场啊,难道我神经脆弱?告诉我你哭了几场,我脸都洗不过来啊。不是我不懂爱情,没有爱心,不相信真情,确是这世界忙碌得很,谁与我共行?科学探索:英国一位农夫在自家花园内发现了三只瑟瑟发抖的小狐狸,于是给了它们一个毛绒玩具。没想到小家伙们把它当做了自己的妈妈,不但和它形影不离,吃饭的时候还会留下部分食物,把盆子推到它跟前好友爱的一幕!给饿了的小北极熊食物。在蛮荒之地,气候恶劣。食物不足时,白熊…

    2022年7月12日
    18
  • 黑苹果怎么安装clover(clover引导教程)

    黑苹果安装教程多逛逛论坛,多攒攒人品,相信人品加技术再有点经验,安装黑苹果并不难(大神说的。。。。)

    2022年4月17日
    57
  • opc服务器消息通知代码,OPC 服务器 操作示例源码

    opc服务器消息通知代码,OPC 服务器 操作示例源码【实例简介】TestOPC【实例截图】【核心代码】usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingHaiGrang.Package.OpcNetApiChs.DaNet;usingHaiGrang.Package.OpcNetApiChs.Opc;usingHaiGr…

    2022年6月20日
    28
  • pycharm创建flask项目没有子文件夹和app文件_python flask框架

    pycharm创建flask项目没有子文件夹和app文件_python flask框架打开Pycharm的File菜单,选择创建新的项目,在弹出对话框中,我们可以看到很多的案例,Flask、Django等等,我们选择Flask创建Flask项目。选择创建之后一个Flask项目就出现在我们眼前:默认文件目录结构为:app.py程序入口,static用于存放静态文件,如js、css、img等,templates用于放置html模板文件在Pycharm菜单栏有个run,我们可以选择run来启动Flask服务,默认打开的是5000端口打开浏览器输入http://lo.

    2022年8月29日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号