https://www.cnblogs.com/huihuihero/p/13711909.html
1、判断用户是否登录,未登录则引导用户去登录,因为直播推送需要用户id
2、判断用户手机是否开启通知权限,若没有则引导其开启,若已开启则请求接口设置开播提醒
在main.js里引入
import permission from ‘@/js_sdk/wa-permission/permission.js‘
Vue.prototype.$perJudge=permission
//判断android通知权限是否开启
function judgeAndroidPermissionPush(){
var result = false;
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
var NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat");
var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();
if (!areNotificationsEnabled) { //未开启通知权限
result = false
uni.showModal({ //进一步处理,提示并引导用户去设置中心开启通知权限
title: ‘提示‘,
content: ‘您尚未开启通知权限,我们无法及时提醒到您,是否前往开启‘,
success: function (res) {
if (res.confirm) {
var Intent = plus.android.importClass(‘android.content.Intent‘);
var Build = plus.android.importClass("android.os.Build");
//判断当前安卓系统
if (Build.VERSION.SDK_INT >= 26) { //android 8.0+
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 { //其他android版本
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);
}
}
});
}else{ //已开启通知权限
result = true
}
return result //返回状态:false为未开启,true为开启,反馈给调用此函数的页面
}
module.exports = {
judgeIosPermission: judgeIosPermission,
requestAndroidPermission: requestAndroidPermission,
checkSystemEnableLocation: checkSystemEnableLocation,
gotoAppPermissionSetting: gotoAppPermissionSetting,
judgeAndroidPermissionPush: judgeAndroidPermissionPush //添加此行代码,将判断安卓通知权限是否开启的函数暴露
}
//设置开播提醒
setStartremind(){
if(this.userToken){ //是否登录
if(this.$platform==‘ios‘){ //iOS端
let res=this.$perJudge.judgeIosPermission(‘push‘) //判断用户是否开通了推送权限
if(res){
//设置开播提醒,请求接口
}else{
//iOS判断未开启通知权限时,封装函数中未做相关处理,所以这里做一下处理,引导用户去开启
uni.showModal({
title: ‘提示‘,
content: "您尚未开启通知权限,我们无法及时提醒到您,是否前往开启",
success: res => {
if (res.confirm) {
this.$perJudge.gotoAppPermissionSetting()
}
}
});
}
}else{ //Android端
let res=this.$perJudge.judgeAndroidPermissionPush()
if(res){
//设置开播提醒,请求接口
}else{
//安卓判断未开启通知权限时,已直接在封装函数中引导用户去开启了,所以这里无需做处理
}
}
}else{
this.loginPopRemind="登录后即可设置开播提醒,是否登录?"
this.$refs.noLoginPopup.open()
}
},
原文:https://www.cnblogs.com/huihuihero/p/13725326.html