uni-app中消息推送uniPush2.0在线推送的具体使用方法

官方文档地址:uni-push 2.0 快速接入指南:https://ask.dcloud.net.cn/article/40283

官方解释,可以查看官方文档,以下是基于官方文档做的具体细节补充

一、客户端集成

1.1 开通 uni-push 2.0 推送服务

unipush 内部封装好了个推及主流厂商 SDK,开发者在使用前必须开通相关服务。

使用 HBuilder 账号登录 开发者中心 ,创建应用、填写应用信息。

选择需要开通的应用,点击进入详情

点击“云端证书”并创建证书

生成之后点击“证书详情”

就可以查看该应用的“应用签名”

选择unipush2.0,选择需要开通应用填入刚刚在证书中获取的“应用签名SHA1值”(由于我不做ios的,所以就没有勾选ios的)

unipush2.0必须要开通云服务空间才可以使用

进入服务空间,点击“新建服务空间”

点击我已阅读

可以根据自己的需要购买相应的产品(为了方便测试,购买的1个月个人版,可根据需要购买)

关联刚开通的云服务空间即可

点击开通应用;到此开通就完成了

 1.2 集成验证

1.2.1 客户端获取 cid

假如我要给“张三”打电话,那就需要知道对方的电话标识,即电话号码是多少。 同理,要给某个客户端推送消息,也需要知道该设备的客户端推送标识。

启动 app 后成功获取 cid 则说明云打包 “在线推送” 成功,支持在线推送。

先跟着示例代码简单体验,详细的uni.getPushClientId API介绍 详情参考 代码示例:

// uni-app客户端获取push客户端标记,代码可以实现在App.vue中  
uni.getPushClientId({  
    success: (res) => {  
        let push_clientid = res.cid  
        console.log('客户端推送标识cid:',push_clientid)  
    },  
    fail(err) {  
        console.log(err)  
    }  
})

1.3 服务端推送消息

注意:使用 uni-push 2.0,服务端不支持用个推 api 推送,只能用 dcloud 提供的 服务端(云函数)推送 。

1.3.1 云函数创建

注意:扩展库依赖 3 张 opendb 表opendb-tempdata,opendb-device,uni-id-device。公测版 uniCloud,执行扩展库会自动创建。如果你使用的是 uniCloud 正式版需要自己在 uniCloud 的 web控制台 创建这3张表。

1.在开发者中心菜单栏找到uniCloud

2.可以看到开通的服务空间信息,点击详情进入服务空间

3.点击云数据库,点击加号,创建云数据库表(我这个是已经创建的截图,具体看下方内容)

示例如下:

1.3.2 云函数执行

在云函数文件目录右键(或按快捷键ctrl + r)-> 上传并运行云函数,此时你的客户端将收到推送消息(应用关闭时为通知栏消息,在线时代码监听到推送消息)。

云函数中调用uni-cloud-push扩展库的sendMessage方法,向客户端推送消息

// 简单的使用示例  
'use strict';  
const uniPush = uniCloud.getPushManager({appId:"__UNI__XXXXXX"}) //注意这里需要传入你的应用appId  
exports.main = async (event, context) => {  
    return await uniPush.sendMessage({  
        "push_clientid": "xxx",     //填写上一步在uni-app客户端获取到的客户端推送标识push_clientid  
        "force_notification":true,  //填写true,客户端就会对在线消息自动创建“通知栏消息”。  
        "title": "通知栏显示的标题",      
        "content": "通知栏显示的内容",  
        "payload": {  
            "text":"体验一下uni-push2.0"  
        },  
        "options":{  
            "HW": {      
                 // 值为int 类型。1 表示华为测试消息,华为每个应用每日可发送该测试消息500条。此 target_user_type 参数请勿发布至线上。      
                  "/message/android/target_user_type":1      
              } ,    
            "HO": {      
                 //值为int 类型。1 表示测试推送,不填默认为0。荣耀每个应用每日可发送该测试消息1000条。此测试参数请勿发布至线上。  
                  "/android/targetUserType": 1   
              } ,  
            "VV": {      
                 //值为int 类型。0 表示正式推送;1 表示测试推送,不填默认为0。此 pushMode 参数请勿发布至线上。  
                  "/pushMode":1      
              } ,    
            "XM": {      
                 //新小米消息分类下,私信公信id都必须要传,否则请求小米厂商接口会被拦截  
                  "/extra.channel_id": "填写小米平台申请的渠道id"   
              }    
        }  
    })  
};

如果你希望当应用在线时,也通过“通知栏消息”来提醒用户;可以通过以下两种方式实现:

  1. 监听到消息内容后,根据业务需要自己判断是否要创建“通知栏消息”,需要就调用创建本地消息API uni.createPushMessage手动创建通知栏消息。
  2. 服务端执行推送时,传递参数force_notification:true,客户端就会自动创建“通知栏消息”(此时你监听不到消息内容),当用户点击通知栏消息后,APP才能监听到消息内容。

先跟着示例代码简单体验,详细的 uniPush.sendMessage API介绍 详情参考
检查确认当前 app 的通知栏权限开启后,则可以开始进行推送测试。

1.3.3 测试在线推送,打开 app 在前台时进行推送

 1.3.4 客户端监听推送消息

如果您需要对接收到的消息进行自定义处理,可以再阅读一下本文开头的 “消息下发流程图”。

客户端监听推送消息的代码,需要在收到推送消息之前被执行。所以应当写在应用一启动就会触发的 应用生命周期 onLaunch中。

示例代码:

//文件路径:项目根目录/App.vue  
export default {  
    onLaunch: function() {  
        console.log('App Launch')  
        uni.onPushMessage((res) => {  
            // 监听通知栏消息的点击  
            if(res.type == 'click'){  
                // 如果需要跳转app内指定页面,则自己实现下方的跳转代码。  
                uni.navigateTo({    
                    //页面路径示例值:/pages/pushinfo/pushinfo    
                    url:'指定页面路径'      
                })    
            }  
            // 监听在线推送消息,若云函数设置了 "force_notification":true,则不会触发此 receive。  
            if(res.type == 'receive'){  
                console.log("接收到的消息内容",res.payload);  
            }  
        })  
    },  
    onShow: function() {  
        console.log('App Show')  
    },  
    onHide: function() {  
        console.log('App Hide')  
    }  
}

先跟着示例代码简单体验,详细的 uni.onPushMessage API介绍 详情参考

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值