Uniapp开发app ios、android消息推送
·
一、登录 Dcloud开发者中心
1.开通uni-push服务

2.厂商推送设置

二、mainfest.json里选择需要的推送模块

三、打包自定义基座
1.发行->App-Android/iOS-云打包

Android

iOS

四、创建云函数
1.创建

2.进入uniCloud服务空间

3.新建服务空间->选择阿里云

4.创建三个数据表

5.项目右键->绑定服务器

6.cloudfunctions右键->新建云函数/云对象


最后点击确定
7.代码
msgPush->index.js
'use strict';
const uniPush = uniCloud.getPushManager({
appId: "" // 替换为实际appId
})
exports.main = async (event) => {
const {
clientId,
title,
content,
payload
} = event // 通过参数接收推送内容
console.log('payload', payload);
return await uniPush.sendMessage({
"push_clientid": clientId,
"force_notification": true,
"title": title,
"content": content,
"payload": payload,
//离线厂商配置
"options": {
"HW": {
"/message/android/target_user_type": process.env.NODE_ENV === 'development' ? 1 : 0
},
"XM": {
"/extra.channel_id": "" // 小米正式channel
}
}
})
}
你创建的云函数右键->上传部署
五、消息处理
app.vue
<script>
export default {
onLaunch: function() {
// 客户端唯一的推送
// 首次启动应用时获取设备唯一的推送标识(CID)作为后续消息推送的标识符
// 客户端通过该标识接收来自服务端的推送消息 支持在线和离线场景
uni.getPushClientId({
success: (res) => {
console.log(res.cid);
},
fail(err) {
console.log(err)
}
});
// 创建并显示一条推送通知
// 根据业务逻辑使用 我放在websocket接受到消息时触发
uni.createPushMessage({
title: '您有新的消息', // 通知标题
content: '点击查看详情', // 通知内容
icon: '/static/logo.png', // 自定义图标(可选)
sound: 'system', // 使用系统默认提示音(可选)
cover: false, // 是否覆盖之前同类型通知(可选)
payload: { // 自定义数据(可选)
url: '/pages/detail/detail?id=123'
},
success: () => {
console.log('通知发送成功');
},
fail: (err) => {
console.error('通知发送失败', err);
}
});
// 监听推送消息(需在应用初始化时调用)
uni.onPushMessage((res) => {
if (res.type === 'click') {
// 处理通知栏点击事件
console.log('用户点击了通知栏', res.payload);
uni.navigateTo({
url: '/pages/notify/notify?data=' + JSON.stringify(res.payload)
});
} else if (res.type === 'receive') {
// 处理在线推送消息(应用在前台时触发)
console.log('接收到推送内容', res.data);
uni.showToast({
title: '新消息:' + res.data.content
});
}
});
// 监听点击事件
plus.push.addEventListener('click', (msg) => {
console.log('通知点击事件:', msg);
if (msg.payload) {
const payload = JSON.parse(msg.payload);
uni.navigateTo({
url: payload.pagePath
}); // 跳转指定页面
}
});
// 监听接收事件(仅应用在前台时触发)
plus.push.addEventListener('receive', (msg) => {
uni.showToast({
title: '新消息到达: ' + msg.content
});
plus.runtime.setBadgeNumber(1); // 更新角标
});
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style lang="scss">
</style>
六、测试
运行到手机或模拟器开始测试吧!!!
更多推荐

所有评论(0)