uniapp获取手机通知权限实现demo

2023-12-01 0 296
目录
  • 获取通知权限跳转开启
    • 设置弹窗通知
    • Tips:

获取通知权限跳转开启

之前发了一篇使用插件市场获取权限的文章,但是有兄弟想要一个单独开启通知权限的教程,这篇文章特意整理一下获取通知权限跳转开启的方法

设置弹窗通知

首先我是设置了一个弹窗通知,具体样式就不在这里写了,可以自行写一个,我在这里就写一下具体获取以及跳转的代码

//首先我们需要一个触发,我是在进入页面onReady()生命周期中触发的检测
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 就是通知权限没有开启
this.tongzhi = true; //这里是我写的一个弹窗上面有一个跳转开启的按钮,自行添加即可
}
}
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();
// 未开通‘允许通知\’权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置
if (!areNotificationsEnabled) {
this.tongzhi = true; //这里也一样未开启权限,弹出弹窗
}
}
},

上面是根据手机操作系统来检测系统是否开启通知权限,下面代码是在检测没有开启通知权限后弹窗提示,然后点击弹窗按钮后到设置对应权限的页面跳转方法

Tips:

安卓手机由于系统新老版本不一样,开启权限的位置可能有所不同,需要根据实际情况来进行修改,ios由于权限问题有可能会跳转失败,需要手动开启

//开启通知
openTongZhi() { //弹窗按钮绑定方法
let platform = uni.getSystemInfoSync().platform; //获取安卓还是ios
this.tongzhi = false;
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);
}
},

以上就是在uniapp中开启通知权限的方法了,如果有需要,大家可自行挪用,如有写的不清楚的地方还请指出,更多关于uniapp获取手机通知权限的资料请关注悠久资源网其它相关文章!

您可能感兴趣的文章:

  • uniapp @click事件冒泡问题解决示例
  • uniapp界面新增水印实现示例详解
  • uniapp解决软键盘弹出问题方法详解
  • uniapp路由uni-simple-router使用示例
  • uniappmovable-area应用

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 JavaScript uniapp获取手机通知权限实现demo https://www.u-9.cn/biancheng/javascript/4618.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务