uniapp消息推送
基于uniPush2.0
首先需要在DCloud开发者后台开通服务空间
点击查看官方内容
填写相关信息
然后回到HburilderX里,右击项目《创建uniCloud云开发环境》,右击新建的uniCloud文件,选择《关联云服务空间或项目》,再uniCloud内的“cloudfunctions”文件右击《新建云函数》,“点击下面第二个箭头添加一键推送模块”
打开新建的云函数下的 index,添加下面代码
// 简单的使用示例
'use strict';
const uniPush = uniCloud.getPushManager({appId: "__UNI__4D91404"
}) //注意这里需要传入你的应用appId,用于指定接收消息的客户端
exports.main = async (event, context) => {console.log('请求体', event);try {let res = await uniPush.sendMessage({"push_clientid": JSON.parse(event.body).push_clientid, //填写上一步在uni-app客户端获取到的客户端推送标识push_clientid"title": JSON.parse(event.body).title,"content": JSON.parse(event.body).content,"payload": JSON.parse(event.body).payload,"force_notification": true,"channel": {"XM": "115318", //"HW": "NORMAL","OP": "115318","VV": 1},"options": {"OP": {"/channel_id": "", //打开OPPO开发者平台有推送id"/off_line_ttl": 86400 // 离线消息的存活时间(time_to_live) (单位:秒), 【最长10天】},"XM": {"/extra.channel_id": "" , //打开小米开发者平台有推送id},"HW": {"/message/android/notification/importance": "NORMAL"},"VV": {"/classification": 1, //0代表运营消息,1代表系统消息"/notifyType": 4 // 通知类型 1:无,2:响铃,3:振动,4:响铃和振动 注意:只对Android 8.0及以下系统有效}}})return {"data": {data: res.data,res: event.body},"errCode": res.errCode,"errMsg": '' + res.errMsg}} catch (e) {return {"data": {data: res.data,res: event.body},"errCode": 500,"errMsg": '传的数据不对' + e}}};
右击“cloudfunctions”,选择上传所有云函数
配置完了,下面是uniapp里
点击查看官方内容
在首页获取推送cid传给后端
const plugin = uni.requireNativePlugin('DCloud-PushSound');
import push from '@/js_sdk/dc-push/push.js';
if (!push.isNotOn()) {uni.showModal({title: '提示',content: '未确保您即时收到消息,请打开APP通知权限',showCancel: true,success: function(res) {if (res.confirm) {if ('iOS' == plus.os.name) {var UIApplication = plus.ios.import('UIApplication');var NSURL = plus.ios.import('NSURL');var setting = NSURL.URLWithString('app-settings:');var application = UIApplication.sharedApplication();application.openURL(setting);plus.ios.deleteObject(setting);plus.ios.deleteObject(application);} else {var main = plus.android.runtimeMainActivity();var pkName = main.getPackageName();var Intent = plus.android.importClass('android.content.Intent');var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS'); //可设置表中所有Action字段intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);main.startActivity(intent);}}}});
}else{uni.getPushClientId({success: (ret) => {console.log(ret);upClientid({pushClientid: ret.cid}).then((res) => {uni.setStorageSync('tuisongCheck',true)// console.log('更新推送id', ret.cid, res);});},fail(err) {console.log(err);}
});
}
在APP.vue里获取推送内容
uni.onPushMessage((res) => {console.log('监听到推送消息1', res);if(res.data.payload.includes('\\')){res.data.payload = res.data.payload.replace(new RegExp(/\\/,'g'),'')}let datas = JSON.parse(res.data.payload)console.log('监听到推送消息2', datas);
})