最近遇到了 离线通知的开发场景,本人使用的是mqtt接收消息, uniapp本地通知, 特别记录下, 供各位老铁参考,如下:
mqtt接收消息,本地创建通知(安卓端)
创建mqtt连接(前提uniapp项目配好push模块)
// Mqtt连接
mqtt.connect(getApp().globalData.matt_Url, {
keepalive: 30,
// clientId: 'test.exchange' + Math.random().toString(16).substr(2, 8),
clientId: deviceUid,
protocolId: 'MQTT',
protocolVersion: 4,
username: 'eric',
password: 'eric',
// clean: false,
reconnectPeriod: 5000, //重连间隔,如果为0则禁用自动重连
resubscribe: true //关闭订阅,不带页面显示会出问题
})
console.log('connect...')
// getApp().globalData.client = client
// console.log("21212122212",getApp().globalData.client)
getApp().globalData.client.on('connect', function() {
console.log('on connect 连接成功')
// console.log(uni.getStorageSync("username"))
//订阅主题
// client.subscribe('test.exchange.test3', function(err, granted) {
getApp().globalData.client.subscribe('test.exchange.' + uni.getStorageSync("username"), function(err, granted) {
if (!err) {
console.log('subscribe ' + JSON.stringify(granted))
//发布主题presence,消息内容为Hello mqtt
// setTimeout(function(){
// getApp().globalData.client.publish('test.exchange.admin', '{"CompanyName":"测试公司","EquipmentName":"app设备1","AlarmText":"温度","AlarmValue":31,"AlarmTime":"2020-08-28 17:38:11","PositionName":"机房1","AlarmType":1}')
// },3000)
} else {
//打印错误
console.log('subscribe ' + err)
}
});
}).on('reconnect', function() {
console.log('on reconnect')
}).on('error', function() {
console.log('on error')
}).on('end', function() {
console.log('on end')
}).on('message', function(topic, message) {
// 此处接收到消息进行创建本地消息
//把接收到的数据处理成,要推送的数据格式messageStr
var content = messageStr,
payload = "payload数据",
option = {
"aa": 11,
"bb": 2
}
plus.push.createMessage(content, payload, option);
})
更多细节参考文章:https://ask.dcloud.net.cn/article/34