现在很多手机系统默认安装APP时候是没开推送权限的,所以要第一次开启APP时候判断当前系统有没有推送权限,
之前就是忘记这个一次测试推送都不显示坑到自己了,下面那个操作可以直接调取系统让用户选择是否开启当前APP的消息推送权限
废话不多说代码发起来
text
methods:{
/**
* @app判断是否有推送权限
*/
judgeIosPermissionPush() {
//#ifdef APP-PLUS
let isIos
isIos = plus.os.name == 'iOS'
if (isIos) {
//ios
var result = false
var UIApplication = plus.ios.import('UIApplication')
var app = UIApplication.sharedApplication()
var enabledTypes = 0
if (app.currentUserNotificationSettings) {
var settings = app.currentUserNotificationSettings()
enabledTypes = settings.plusGetAttribute('types')
console.log('enabledTypes1:' + enabledTypes)
if (enabledTypes == 0) {
// gotoAppPermissionSetting()
// console.log('推送权限没有开启')
} else {
result = true
// console.log('已经开启推送功能!')
}
plus.ios.deleteObject(settings)
} else {
enabledTypes = app.enabledRemoteNotificationTypes()
if (enabledTypes == 0) {
// gotoAppPermissionSetting()
// console.log('推送权限没有开启!')
} else {
result = true
// console.log('已经开启推送功能!')
}
console.log('enabledTypes2:' + enabledTypes)
}
plus.ios.deleteObject(app)
plus.ios.deleteObject(UIApplication)
return result
} else {
//android
var result = false
var main = plus.android.runtimeMainActivity()
var pkName = main.getPackageName()
var uid = main.getApplicationInfo().plusGetAttribute('uid')
var NotificationManagerCompat = plus.android.importClass(
'androidx.core.app.NotificationManagerCompat'
)
//("android.support.v4.app.NotificationManagerCompat");
var areNotificationsEnabled = NotificationManagerCompat.from(main)
// 未开通‘允许通知’权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置
if (!areNotificationsEnabled.areNotificationsEnabled()) {
uni.showModal({
title: '提示',
content: '请先打开APP通知权限',
showCancel: false,
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)其他--跳转到该应用管理的详情页
var Settings = plus.android.importClass('android.provider.Settings')
var Uri = plus.android.importClass('android.net.Uri')
var intent = new Intent()
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
var uri = Uri.fromParts('package', main.getPackageName(), null)
intent.setData(uri)
}
// 跳转到该应用的系统通知设置页
main.startActivity(intent)
return result
}
},
})
} else {
result = true
return result
}
}
//#endif
},
}