由于Playstore要求minimumTargetSDK版本为33,这导致我的通知库不再适用于android 13。
受影响的图书馆
1. awesome-cordova-plugins/local-notifications/ngx (Local Notification)
2. cordova-plugin-fcm-with-dependecy-updated/ionic/ngx (FCM)
尝试的解决方案
在 Android Manifest 中添加了必要的权限
<uses-permission android:name="android.permission.NFC" />
尝试请求通知权限无果
前一个函数将为 requestPermission() 返回 false,而不显示对话框以指示我是否要向应用程序授予权限。
async askForLocalNotificationPermission() {
if (this.platform.is('android')) {
const hasPermission = await this.localNotifications.requestPermission();
if (hasPermission) {
console.log('Notification permission granted');
} else {
console.log('Notification permission denied');
}
}
}
后一个函数将为 requestPermission() 返回 true,而不显示对话框以指示我是否要向应用程序授予权限。
async askForFCMNotificationPermission() {
if (this.platform.is('android')) {
const hasPermission = await this.fcm.requestPermission();
if (hasPermission) {
console.log('Notification permission granted');
} else {
console.log('Notification permission denied');
}
}
}
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
添加此权限并请求用户在运行时授予该权限。
经过进一步调试,
我发现权限库已过时,并且不包含发送通知所需的新权限。
因此采取以下步骤来解决该问题
添加以下代码来检查并请求发送通知的权限
async askForNotificationPermission() {
return new Promise((resolve)=> {
let phoneVersion = parseInt(this.device.version, 10);
if (phoneVersion >= 13) {
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.POST_NOTIFICATIONS).then(
result => {
if (result.hasPermission) {
resolve(true);
} else {
// Request the permission
this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.POST_NOTIFICATIONS).then(permission => {
if(permission.hasPermission) {
}
else{
}
resolve(true);
});
}
},
err => {
console.error(err);
resolve(true);
}
);
}
});
} }