uniapp消息推送

基于uniPush2.0

首先需要在DCloud开发者后台开通服务空间

点击查看官方内容
uniapp消息推送_第1张图片
填写相关信息

然后回到HburilderX里,右击项目《创建uniCloud云开发环境》,右击新建的uniCloud文件,选择《关联云服务空间或项目》,再uniCloud内的“cloudfunctions”文件右击《新建云函数》,“点击下面第二个箭头添加一键推送模块”

uniapp消息推送_第2张图片

打开新建的云函数下的 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消息推送_第3张图片

配置完了,下面是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);
})

打自定义包测试

你可能感兴趣的:(uniapp,uni-app,java,android)