app.vue文章来源地址https://www.toymoban.com/news/detail-619703.html
<script>
export default {
onLaunch: async function() {
// #ifdef APP-PLUS
this.getQuanxian();// 查询是否开启通知
// #endif
},
onShow: function() {},
onHide: function() {},
methods:{
getQuanxian() {
let platform = uni.getSystemInfoSync().platform; //首先判断app是安卓还是ios
console.log(platform);
if (platform == "ios") { //这里是ios的方法
console.log("我是iOS");
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) { //如果enabledTypes = 0 就是通知权限没有开启
uni.showModal({
title: '提示',
content: '请打开通知权限',
success: res => {
if (res.confirm) {
this.openTongZhi()
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
} else {
// uni.showToast({
// title: "通知权限已开启",
// icon: "none"
// })
}
}
plus.ios.deleteObject(settings);
} else if (platform == "android") { //下面是安卓的方法
// console.log("我是安卓", plus.android);
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"
);
//android.support.v4升级为androidx
if (NotificationManagerCompat == null) {
NotificationManagerCompat = plus.android.importClass(
"androidx.core.app.NotificationManagerCompat"
);
}
var areNotificationsEnabled =
NotificationManagerCompat.from(main).areNotificationsEnabled();
// console.log(areNotificationsEnabled);
// 未开通‘允许通知’权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置
if (!areNotificationsEnabled) {
this.tongzhi = true; //这里也一样未开启权限,弹出弹窗
}
if (areNotificationsEnabled) {
// uni.showToast({
// title: "通知权限已开启",
// icon: "none"
// })
} else {
uni.showModal({
title: '提示',
content: '是否前往打开通知权限',
success: res => {
if (res.confirm) {
this.openTongZhi()
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
},
openTongZhi() { //弹窗按钮绑定方法
let platform = uni.getSystemInfoSync().platform; //获取安卓还是ios
if (platform == "ios") { //如果机型是ios,ios由于权限问题,可能需要手动开启
var UIApplication = plus.ios.import("UIApplication");
var app = UIApplication.sharedApplication();
var settings = app.currentUserNotificationSettings();
enabledTypes = settings.plusGetAttribute("types");
var NSURL2 = plus.ios.import("NSURL");
var setting2 = NSURL2.URLWithString("app-settings:");
var application2 = UIApplication.sharedApplication();
application2.openURL(setting2);
plus.ios.deleteObject(setting2);
plus.ios.deleteObject(NSURL2);
plus.ios.deleteObject(application2);
plus.ios.deleteObject(settings);
} else if (platform == "android") { //如果机型是安卓
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
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);
}
},
}
}
</script>
文章来源:https://www.toymoban.com/news/detail-619703.html
到了这里,关于uniapp:查询APP是否开启通知权限的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!