uniapp获取手机通知权限

这篇具有很好参考价值的文章主要介绍了uniapp获取手机通知权限。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

//首先我们需要一个触发,我是在进入页面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中开启通知权限的方法了,如果有需要,大家可自行挪用,如有写的不清楚的地方还请指出文章来源地址https://www.toymoban.com/news/detail-521442.html

到了这里,关于uniapp获取手机通知权限的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包