增加主动调用通知

This commit is contained in:
xuli
2025-12-15 14:09:48 +08:00
parent b84d395b43
commit 47618273ea
2 changed files with 77 additions and 1 deletions

View File

@@ -62,7 +62,8 @@
"<uses-permission android:name=\"android.permission.RESTART_PACKAGES\" />", "<uses-permission android:name=\"android.permission.RESTART_PACKAGES\" />",
"<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\" />", "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\" />",
"<uses-permission android:name=\"android.permission.NFC\"/>", "<uses-permission android:name=\"android.permission.NFC\"/>",
"<uses-feature android:name=\"android.hardware.nfc\" android:required=\"true\"/>" "<uses-feature android:name=\"android.hardware.nfc\" android:required=\"true\"/>",
"<uses-permission android:name=\"android.permission.POST_NOTIFICATIONS\"/>"
], ],
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ], "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
"minSdkVersion" : 23, "minSdkVersion" : 23,

View File

@@ -55,6 +55,9 @@ onLoad(async(opt) => {
// uni.preloadPage({url: "/pages/home/home"}); // uni.preloadPage({url: "/pages/home/home"});
// #ifdef APP-PLUS // #ifdef APP-PLUS
//手机通知授权
noticMsgTool();
// 查询版本接口 // 查询版本接口
await getOSVesion(); await getOSVesion();
@@ -216,6 +219,78 @@ const handleClose=()=>{
selectDeviceId() selectDeviceId()
} }
} }
//通知授权
const noticMsgTool=()=>{
if (uni.getSystemInfoSync().platform == "ios") {
// iOS: 使用 iOS API 检查通知权限
plus.ios.import('UserNotifications');
var UNNotificationSettings = plus.ios.invoke('UNUserNotificationCenter', 'currentNotificationCenter');
plus.ios.invoke(UNNotificationSettings, 'getNotificationSettingsWithCompletionHandler', function(settings) {
var authorizationStatus = plus.ios.invoke(settings, 'authorizationStatus');
if (authorizationStatus !== 3) { // 3表示已授权
//苹果打开对应的通知栏
uni.showModal({
title: '通知权限开启提醒',
content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
showCancel: false,
confirmText: '去设置',
success: function(res) {
if (res.confirm) {
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);
}
}
});
}
});
} else {
//android打开对应的通知栏
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
var context = main.getApplicationContext();
var NotificationManager = plus.android.importClass('android.app.NotificationManager');
var notificationManager = context.getSystemService(context.NOTIFICATION_SERVICE);
var areNotificationsEnabled = notificationManager.areNotificationsEnabled();
if (!areNotificationsEnabled) {
// 提示用户开启通知权限
uni.showModal({
title: '通知权限开启提醒',
content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
showCancel: false,
confirmText: '去设置',
success: function(res) {
if (res.confirm) {
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> </script>
<style> <style>