蔡cai
蔡cai
  • 发布:2022-12-02 10:27
  • 更新:2024-02-04 10:42
  • 阅读:1138

app判断通知权限是否开启,前往系统设置页面开关通知权限

分类:uni-app

来源:https://ext.dcloud.net.cn/plugin?id=789

// 判断通知权限是否开启  
function isOn() {  
	// #ifdef APP-PLUS  
	if (plus.os.name == 'Android') {  
		var main = plus.android.runtimeMainActivity();  
		var NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat");  
		if (NotificationManagerCompat == null) { NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat"); }  
		var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();  
		return areNotificationsEnabled;  
	} else if (plus.os.name == 'iOS') {  
		var isIosOn = undefined;  
		var types = 0;  
		var app = plus.ios.invoke('UIApplication', 'sharedApplication');  
		var settings = plus.ios.invoke(app, 'currentUserNotificationSettings');  
		if (settings) {  
			types = settings.plusGetAttribute('types');  
			plus.ios.deleteObject(settings);  
		} else {  
			types = plus.ios.invoke(app, 'enabledRemoteNotificationTypes');  
		}  
		plus.ios.deleteObject(app);  
		isIosOn = (0 != types);  
		return isIosOn;  
	}  
	// #endif  
}  
  
// 前往系统设置页面开启或关闭通知权限  
function switchPushPermissions () {  
	// #ifdef APP-PLUS  
	let title = isOn() ? "通知权限关闭提醒" : "通知权限开启提醒";  
	let content = isOn() ? "通知权限已开启,是否前往设置关闭?" : "您还没有开启通知权限,无法接受到消息通知,是否前往设置?";  
	// 打开安卓系统设置页面  
	let openAndroidSetting = () => {  
		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);  
	}  
	// 打开苹果系统设置页面  
	let openIOSSetting = () => {  
		var app = plus.ios.invoke('UIApplication', 'sharedApplication');  
		var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:');  
		plus.ios.invoke(app, 'openURL:', setting);  
		plus.ios.deleteObject(setting);  
		plus.ios.deleteObject(app);  
	}  
	// 弹窗提醒开通或关闭权限,点击确认后,跳转到系统设置页面进行设置  
	uni.showModal({  
		title: title,  
		content: content,  
		showCancel: true,  
		confirmColor: "#ff903f",  
		success: (res) => {  
			if (res.confirm) {  
				if (plus.os.name == 'Android') {  
					openAndroidSetting();  
				} else if (plus.os.name == 'iOS') {  
					openIOSSetting();  
				}  
			}  
		}  
	})  
	// #endif    
}  
  
export default {  
	isOn,  
	switchPushPermissions  
};
1 关注 分享
OlyLis

要回复文章请先登录注册

蔡cai

蔡cai (作者)

回复 kakarot99 :
好的
2024-02-04 10:42
kakarot99

kakarot99

回复 蔡cai :
可以了,是我打包app时忘记勾选push消息推送模块
2024-02-04 10:11
蔡cai

蔡cai (作者)

回复 蔡cai :
中间那一列
2024-02-02 16:55
蔡cai

蔡cai (作者)

回复 kakarot99 :
还有一个可能,苹果开发者官网进去——>标识符(中间那一栏)——>点击进去有个Communication Notifications看有没有勾选上
2024-02-02 16:54
蔡cai

蔡cai (作者)

回复 kakarot99 :
你去看下文章开头的来源地址,点进去是不是那个截图
2024-02-02 16:49
蔡cai

蔡cai (作者)

回复 kakarot99 :
能否截个图看看嘛,这个做很久了,忘记了
2024-02-02 16:47
kakarot99

kakarot99

ios跳转到设置页面 为啥没有通知这一选项
2024-02-02 15:20
OlyLis

OlyLis

牛牛牛,找了好久
2023-06-28 11:53