React Native 检查 Android 上是否启用了应用程序通知
React Native check if app notification enabled on Android
用户可以在 Android 上关闭应用通知。有没有办法检查用户是否这样做?
React Native doc 没有提到通知权限,因为它不是需要提示用户的权限。
Android docs 确实提到了访问通知策略的能力。
我找到了一个名为 React-native-permission-settings
的图书馆
它仅适用于 android,所以如果您需要 iOS 支持,我认为您也需要修改它。
您可以按照 here
中的安装指南进行操作
并在您的代码中实现它
import NotificationSettings from 'react-native-permission-settings';
...
NotificationSettings.areNotificationsEnabled((isEnabled: boolean) => {
console.log(`Notifications are enabled: ${isEnabled}`);
});
我以前用过这个,效果不错:
https://github.com/jigaryadav/react-native-check-notification-enable
基本上我作为助手最终实现的是这两个功能:
export const getNotificationStatus = async () => {
if (Platform.OS === 'ios') {
const status = await Permissions.check(PermissionRequested.NOTIFICATION)
if (status === PermissionsStatus.AUTHORIZED) {
return true
} else {
return false
}
} else {
// This is where I am using the library
const status = await NotificationManager.areNotificationsEnabled()
return status
}
}
export const openNotificationsSettings = () => {
if (Platform.OS === 'ios') {
Linking.openURL('app-settings:')
} else {
AndroidOpenSettings.appNotificationSettings()
}
}
只是为了解释一下整个片段:
我还结合使用这些库来实现所有功能:检查它们是否已启用并导航到设置页面以在需要时撤销
import AndroidOpenSettings from 'react-native-android-open-settings'
import NotificationManager from 'react-native-check-notification-enable'
import Permissions from 'react-native-permissions'
用户可以在 Android 上关闭应用通知。有没有办法检查用户是否这样做?
React Native doc 没有提到通知权限,因为它不是需要提示用户的权限。
Android docs 确实提到了访问通知策略的能力。
我找到了一个名为 React-native-permission-settings
的图书馆它仅适用于 android,所以如果您需要 iOS 支持,我认为您也需要修改它。
您可以按照 here
中的安装指南进行操作并在您的代码中实现它
import NotificationSettings from 'react-native-permission-settings';
...
NotificationSettings.areNotificationsEnabled((isEnabled: boolean) => {
console.log(`Notifications are enabled: ${isEnabled}`);
});
我以前用过这个,效果不错:
https://github.com/jigaryadav/react-native-check-notification-enable
基本上我作为助手最终实现的是这两个功能:
export const getNotificationStatus = async () => {
if (Platform.OS === 'ios') {
const status = await Permissions.check(PermissionRequested.NOTIFICATION)
if (status === PermissionsStatus.AUTHORIZED) {
return true
} else {
return false
}
} else {
// This is where I am using the library
const status = await NotificationManager.areNotificationsEnabled()
return status
}
}
export const openNotificationsSettings = () => {
if (Platform.OS === 'ios') {
Linking.openURL('app-settings:')
} else {
AndroidOpenSettings.appNotificationSettings()
}
}
只是为了解释一下整个片段:
我还结合使用这些库来实现所有功能:检查它们是否已启用并导航到设置页面以在需要时撤销
import AndroidOpenSettings from 'react-native-android-open-settings'
import NotificationManager from 'react-native-check-notification-enable'
import Permissions from 'react-native-permissions'