unipush消息推送-离线、在线

 uni-push双端消息推送-在线、离线

----在线推送----

一、开通uni-push服务

  • 开通消息推送服务,建议开通2.0版本,填好所需内容

云服务空间使用阿里云免费版本进行测试uniCloud控制台

二、Hbuilder代码配置

  • 在manifest.json中勾选push消息推送

  • 关联服务空间、右键创建云开发环境

  • 右键关联云服务空间

  • 在cloudfunctions右键新建云函数,添加uni-cloud-push依赖

  • 在新建好的index.js中填写以下代码,自行填写appId和cid(push_clientid)

// 简单的使用示例  
'use strict';  
const uniPush = uniCloud.getPushManager({appId:"__UNI__******"}) //注意这里需要传入你的应用appId  
exports.main = async (event, context) => {  
    return await uniPush.sendMessage({  
        "push_clientid": "147160e8f371c0********",     //填写上一步在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      
              } ,    
            "VV": {      
                 //值为int 类型。0 表示正式推送;1 表示测试推送,不填默认为0。此 pushMode 参数请勿发布至线上。  
                  "/pushMode":1      
              }    
        }  
    })  
};
  • cid(push_clientid)获取方式:在项目App.vue中填写以下代码,下一步骤运行代码时,cid通过控制台进行打印

      var timer = setTimeout(function() {
                    console.log("异步获取客户端推送标识信息");
                    plus.push.getClientInfoAsync(function(info) {
                        if (info.clientid) {
                            clearInterval(timer);
                            uni.setStorageSync('cid', info.clientid)
                            //将cid在登录时一起传给后端,和用户信息存在数据库中。
                            console.log("clientid", JSON.stringify(info.clientid));
                        }
                    }, function(e) {
                        console.log(JSON.stringify(e));
                    })
      
                }, 3000);

三、打包运行测试

  • 填写相关证书信息,选择自定义调试基座进行打包

  • 打包完成后,运行到自定义基座

  • 运行完成后,通过控制台拿到cid

  • 填写好相关的appid和cid,右键创建好的云函数文件夹,上传并运行,在线推送配置完成


----离线推送----

  • 离线推送需要配置相关推送证书,小米、oppo、vivo、魅族分机型需要上线应用商店,华为和荣耀暂时不需要上应用商店,下方讲解如何创建证书

  • 荣耀机型为例,在厂商推送设置,填写好相关证书信息

  • 重新运行基座,将cid输入,看是否成功返回token

  • 将手机应用退出,右键创建好的云函数文件夹,上传并运行

---

----证书创建----

一、iOS证书

参考个推官方文档iOS 证书配置指南-个推文档中心

二、安卓证书(荣耀机型为例)

  • 在Dcloud中申请安卓证书

  • 注册荣耀账号Honor ID

  • 点击应用服务中的推送服务,申请推送服务(企业认证)

  • 填写应用名称,包名,指纹证书(在Dcould应用中点击证书详情查看)

  • 提交完成后点击查看即可获取相关信息

  • 维护到Dcloud厂商推送配置中

----问题解决----

一、证书配置完成,获取不到token

  • 多数是因为云端证书和打包证书配置不一致,6003错误码

解决:【FAQ】推送获取push token报错6003,如何排查?_6003错误码-优快云博客

细节较多,部分步骤未做详细说明,祝你成功!

<think>嗯,用户想了解如何用UniPush 2.0实现离线消息推送。首先,我需要回忆一下相关的文档内容。记得用户提供的引用链接里提到了uni-app的官方文档和个推的配置指南。我得先确认UniPush 2.0的基本流程,比如开通服务、配置厂商通道、客户端集成、服务端调用接口这些步骤。 然后,离线推送的关键在于厂商通道的配置。每个安卓手机厂商都有自己的推送服务,比如华为、小米、OPPO、vivo等。用户需要分别到这些厂商的平台注册应用,获取对应的AppID和AppKey,然后在UniPush的后台填写这些信息。这一步可能容易出错,特别是包名和签名是否一致的问题,需要提醒用户注意。 接下来是客户端的集成部分。UniPush的SDK需要正确集成到uni-app项目中,可能涉及到manifest.json的配置,还有权限的添加。比如,华为需要增加了HMS Core的依赖,小米可能需要添加特定的权限。这些步骤需要详细说明,避免用户遗漏。 服务端调用推送接口时,用户需要生成合适的透传模板或通知栏消息,并且处理不同厂商的兼容性。透传消息可能需要在客户端处理,而通知栏消息则直接显示。同时,离线推送的状态回调也很重要,用户需要配置服务器地址来接收推送结果,这对于调试和监控推送效果有帮助。 用户可能遇到的问题包括推送证书配置错误、厂商参数填写不正确、客户端监听事件未生效等。需要整理常见问题,比如检查包名、签名、网络权限,以及测试方法,比如使用真机调试。此外,荣耀手机的离线推送有单独的配置步骤,可能需要特别强调,引用提供的文档链接。 最后,生成相关问题时要覆盖配置流程、厂商通道、客户端实现、服务端调用、常见错误和荣耀手机的注意事项,这样用户能全面了解各个方面。确保所有步骤都参考了官方文档,避免给出错误信息,同时保持回答结构清晰,分步骤说明,方便用户跟随操作。</think>### UniPush 2.0 离线消息推送实现步骤 #### 一、基础配置流程 1. **开通UniPush服务** -uni-app开发者中心开通UniPush 2.0服务,需完成企业实名认证 - 在应用管理后台启用`uni-push2.0`模块[^1] 2. **配置厂商通道** - 登录各手机厂商开发者平台(华为、小米、OPPO、vivo等) - 创建对应应用并获取`AppID`/`AppKey` -UniPush后台填写厂商参数(包名需与uni-app项目一致) $$厂商通道配置公式:\text{有效推送} = \text{正确包名} + \text{匹配签名} + \text{厂商证书}$$ #### 二、客户端集成 ```javascript // manifest.json 配置示例 "push": { "unipush": { "enable": true, "vendor": { "huawei": {"appid": "xxxx"}, "xiaomi": {"appid": "xxxx"} } } } ``` - 添加原生插件:`push`模块需勾选`Google Play`和`各厂商推送SDK` - 监听推送事件: ```javascript uni.onPushMessage(function(res) { console.log("收到推送:", res); }); ``` #### 三、服务端调用 1. **使用REST API发送推送** - 接口地址:`https://restapi.getui.com/v2/{appId}/push/single` - 需构造JSON参数包含: ```json { "audience": {"cid": ["target_client_id"]}, "settings": {"ttl": 3600}, "push_message": { "notification": { "title": "离线通知", "body": "您有新消息" } } } ``` #### 四、荣耀设备特别配置[^2] 1. 在荣耀开发者平台创建应用 2. 配置`packageName`与uni-app项目一致 3. 获取`client_id`和`client_secret` 4. 上传荣耀推送证书到UniPush后台 #### 五、调试与验证 1. 使用`adb logcat | grep 'PushLog'`查看推送日志 2. 测试离线场景:关闭APP后发送推送 3. 通过`uni.getPushClientId()`获取设备CID
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值