您好,应用程序处于后台且活跃时,用户仍处于在线状态,SDK 仍可实时收到会话消息,消息送达过程中不会使用任何推送服务,因此用户设备不会收到来自任何推送服务的通知。
您可以在 setOnMessageReceivedListener 收到新消息后,调用 uni-app 提供的 api 弹出本地通知。
示例代码如下:
// App.vue 中记录应用是否在后台
{
// 当 uni-app 启动,或从后台进入前台显示
onShow: function() {
// 记录后台状态
uni.setStorageSync('app_background', false);
},
// 当 uni-app 从前台进入后台
onHide: function() {
// 记录后台状态
uni.setStorageSync('app_background', true);
}
}
// 在收消息回调中,处理是否弹出本地通知
engine.setOnMessageReceivedListener((res) => {
// 其他业务逻辑............
// 以下为弹出本地通知的逻辑
// 判断是否为后台
const background = uni.getStorageSync('app_background');
if (background) {
// app 处于后台,弹出本地通知
// notification 为需要显示的消息内容,需要自行从消息 res 中解析
let { message } = res;
let notification;
// messageType = 2 是文本消息
if (message && message.messageType == 2) {
notification = message.text;
}
if (notification) {
plus.push.createMessage(notification, {}, {});
}
}
});
createMessage 接口详细的使用说明可参考链接:HTML5+ API Reference
注意
如上述接口不能满足您的业务需求,可查阅 uni-app 官方问答社区,用其他方式实现本地通知。