uni-app 3.99 unipush1.0 ios在app前台时会自动显示系统推送
uni-app 3.99 unipush1.0 ios在app前台时会自动显示系统推送
调用个推推送接口需要调用透传消息接口
更多关于uni-app 3.99 unipush1.0 ios在app前台时会自动显示系统推送的实战教程也可以访问 https://www.itying.com/category-93-b0.html
感谢回答,但我想表达的不是这个意思。我之前app打包工程的版本是3.2.16,这个旧版本里我已经在前端业务代码里对ios的推送接收和显示做了处理:在plus.push.addEventListener(“receive”) 这个监听器内针对ios的透传消息调用plus.push.createMessage这个接口去实现了app处于前台的时候显示消息推送弹窗
但是后面我把打包工程更新到3.99版本后,我业务代码没做任何改动的情况下,后台调用接口发送推送给ios设备的时候,如果ios设备上的app处于前台,则会弹出两条一模一样的推送
感谢回答,我看看
在 uni-app 3.99 中使用 UniPush 1.0 时,iOS 设备在应用前台时自动显示系统推送消息,可能是因为 UniPush 在前台时默认会将消息以系统通知的形式展示。这通常是为了确保用户能够及时收到重要的推送消息。
解决方案
如果你不希望在前台时显示系统推送消息,可以通过以下方式进行控制:
1. 在前台时手动处理推送消息
你可以在接收到推送消息时,判断应用是否在前台,如果是前台则不显示系统通知,而是通过自定义的方式(如弹窗、Toast 等)展示消息。
// 在 App.vue 或其他合适的地方监听推送消息
uni.onPushMessage((res) => {
if (uni.getSystemInfoSync().platform === 'ios') {
// 判断应用是否在前台
if (uni.getAppBaseInfo().appState === 'active') {
// 应用在前台,自定义处理推送消息
console.log('收到推送消息(前台):', res);
uni.showToast({
title: '收到推送消息:' + res.content,
icon: 'none'
});
} else {
// 应用在后台,允许显示系统通知
console.log('收到推送消息(后台):', res);
}
}
});
2. 配置 UniPush 的前台通知行为
UniPush 提供了配置项,可以控制在前台时是否显示系统通知。你可以在 manifest.json 中进行配置。
{
"app-plus": {
"distribute": {
"ios": {
"unipush": {
"foregroundNotification": false // 设置为 false 时,前台不显示系统通知
}
}
}
}
}
3. 使用 uni.setPushStatus 控制推送状态
你可以在应用启动时动态控制推送状态,例如在前台时禁用系统通知。
// 在 App.vue 的 onLaunch 方法中
onLaunch: function() {
// 判断应用是否在前台
if (uni.getAppBaseInfo().appState === 'active') {
// 前台时禁用系统通知
uni.setPushStatus({
status: false
});
} else {
// 后台时启用系统通知
uni.setPushStatus({
status: true
});
}
}

