这是一个配置了激光推送的uniapp的app.vue页面,如何设置点击推送消息跳转到指定页面
时间: 2025-02-17 21:22:00 浏览: 91
要在uni-app中配置点击推送消息后跳转到指定页面,可以通过在`jpushModule.addNotificationListener`中处理点击事件来实现。以下是如何实现这一功能的步骤:
1. **在 `addNotificationListener` 中添加点击事件处理**:
在 `onLaunch` 方法中的 `addNotificationListener` 回调函数中,处理点击事件并导航到指定页面。
2. **使用 `uni.navigateTo` 或 `uni.reLaunch` 进行页面跳转**:
根据需要选择合适的页面跳转方法。
以下是修改后的代码示例:
```javascript
export default {
data() {
return {};
},
onLaunch: function() {
this.initApp();
// #ifdef APP-PLUS
jpushModule.initJPushService();
jpushModule.setLoggerEnable(true);
plus.screen.lockOrientation("portrait-primary");
// 监听 极光推送连接状态
this.getNotificationEnabled();
jpushModule.addConnectEventListener(result => {
let connectEnable = result.connectEnable
uni.$emit('connectStatusChange', connectEnable)
});
jpushModule.addNotificationListener(result => { // 极光推送的消息通知回调
jpushModule.setBadge(0);
plus.runtime.setBadgeNumber(0);
let notificationEventType = result.notificationEventType;
if (notificationEventType === 1) { // 点击通知
const extraData = result.extraData; // 获取额外数据
const page = extraData.page || '/pages/targetPage'; // 默认跳转页面
uni.navigateTo({ // 或者使用 uni.reLaunch
url: page
});
}
});
uni.$on('connectStatusChange', (connectStatus) => {
var connectStr = '';
if (connectStatus == true) {
connectStr = '已连接';
// this.getRegistrationID()
} else {
connectStr = '未连接';
}
console.log('监听到了连接状态变化 --- ', connectStr);
this.connectStatus = connectStr;
});
jpushModule.isPushStopped(res => {
// code 0已停止推送 1未停止推送
const { code } = res;
console.log(res, '安卓连接状态');
});
// #endif
},
created() {
this.getRegistrationID();
},
methods: {
// 初始化应用
initApp() {
// 初始化应用配置
this.initConfig();
// 检查用户登录状态
//#ifdef H5
this.checkLogin();
//#endif
},
initConfig() {
this.globalData.config = config;
},
checkLogin() {
if (!getToken()) {
this.$tab.reLaunch('/pages/login');
}
},
getRegistrationID() { // 获取registerID
jpushModule.getRegistrationID(result => {
let registerID = result.registerID;
console.log("@@@@@@@registerID = " + registerID);
uni.setStorageSync("registerID", registerID);
});
},
getNotificationEnabled() {
if (uni.getSystemInfoSync().platform == "ios") {
jpushModule.requestNotificationAuthorization((result) => {
let status = result.status;
if (status < 2) {
this.noticMsgTool();
}
});
} else {
jpushModule.isNotificationEnabled((result) => { // 判断android是否打开权限
if (result.code == 0) { // 如果为0则表示 未打开通知权限
this.noticMsgTool();
}
});
}
},
noticMsgTool() {
if (uni.getSystemInfoSync().platform == "ios") {
// 苹果打开对应的通知栏
uni.showModal({
title: '通知权限开启提醒',
content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
showCancel: false,
confirmText: '去设置',
success: function(res) {
if (res.confirm) {
var app = plus.ios.invoke('UIApplication', 'sharedApplication');
var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:');
plus.ios.invoke(app, 'openURL:', setting);
plus.ios.deleteObject(setting);
plus.ios.deleteObject(app);
}
}
});
} else {
// android打开对应的通知栏
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
uni.showModal({
title: '通知权限开启提醒',
content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
showCancel: false,
confirmText: '去设置',
success: function(res) {
if (res.confirm) {
var Intent = plus.android.importClass('android.content.Intent');
var Build = plus.android.importClass("android.os.Build");
// android 8.0引导
if (Build.VERSION.SDK_INT >= 26) {
var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);
} else if (Build.VERSION.SDK_INT >= 21) { // android 5.0-7.0
var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
intent.putExtra("app_package", pkName);
intent.putExtra("app_uid", uid);
} else { // (<21)其他--跳转到该应用管理的详情页
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
intent.setData(uri);
}
// 跳转到该应用的系统通知设置页
main.startActivity(intent);
}
}
});
}
},
}
}
```
### 关键点解释:
1. **`addNotificationListener` 回调**:在 `addNotificationListener` 回调中,检查 `notificationEventType` 是否为 `1`(表示点击通知)。
2. **获取额外数据**:通过 `result.extraData` 获取推送消息中的额外数据,这些数据可以包含目标页面的路径。
3. **页面跳转**:使用 `uni.navigateTo` 或 `uni.reLaunch` 方法进行页面跳转。`uni.navigateTo` 用于在当前页面栈基础上增加一个新页面,`uni.reLaunch` 用于关闭所有页面,打开到应用内的某个页面。
这样,当用户点击推送消息时,应用将跳转到指定的页面。
阅读全文
相关推荐



















