Files
SmartParks_uniapp/utils/notification-permission.js
liyuanchao 2476011b07
Some checks failed
Uniapp 自动化打包 CI/CD / 打包 Uniapp 项目 (push) Has been cancelled
推送
2025-09-14 18:14:36 +08:00

67 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// utils/notification-permission.js
export default {
// 检查通知权限
checkPermission(callback) {
if (plus.os.name !== "Android") {
callback(true) // iOS 默认返回 true另外可以用 APNs 检查
return
}
try {
let NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat")
let context = plus.android.runtimeMainActivity()
let manager = NotificationManagerCompat.from(context)
callback(manager.areNotificationsEnabled())
} catch (e) {
console.error("检查通知权限出错:", e)
callback(false)
}
},
// 打开通知权限设置页面
openPermissionSetting() {
if (plus.os.name !== "Android") return
try {
let main = plus.android.runtimeMainActivity()
let Intent = plus.android.importClass("android.content.Intent")
let Settings = plus.android.importClass("android.provider.Settings")
let intent = new Intent()
if (parseInt(plus.device.sdkVersion) >= 33) {
// Android 13 及以上
intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
intent.putExtra(Settings.EXTRA_APP_PACKAGE, main.getPackageName())
} else {
// Android 8 ~ 12
intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS")
intent.putExtra("app_package", main.getPackageName())
intent.putExtra("app_uid", main.getApplicationInfo().uid)
}
main.startActivity(intent)
} catch (e) {
console.error("跳转通知设置页失败:", e)
}
},
// 统一方法:检查并申请
ensurePermission(next) {
this.checkPermission((enabled) => {
if (enabled) {
next && next() // 已有权限,继续逻辑
} else {
uni.showModal({
title: "通知权限未开启",
content: "请开启通知权限以接收消息提醒",
confirmText: "去开启",
success: (res) => {
if (res.confirm) {
this.openPermissionSetting()
}
}
})
}
})
}
}