#react-native #expo-notifications #expo-permissions
#react-native #expo-уведомления #expo-разрешения
Вопрос:
Итак, у меня есть экран настроек, на котором есть переключатель, который может переключаться, если уведомление включено / ВЫКЛЮЧЕНО. Я могу получить доступ к статусу уведомления, но то, что я хочу сделать, это если я переключу переключатель с OFF -> ON, я хочу, чтобы он программно включал настройки уведомлений, не открывая настройки телефона. Я использую expo для этого. Должен ли я использовать askAsync
?? если я использую это, появится всплывающее разрешение на уведомление, я не хочу, чтобы оно отображалось.
Вот где я могу получить статус УВЕДОМЛЕНИЯ
const { status, permissions } = await Permissions.getAsync(
Permissions.NOTIFICATIONS
); ```
Комментарии:
1. что вы имеете в виду, говоря, что вы не хотите, чтобы это отображалось? Как пользователь должен предоставить вашему приложению разрешение?
2. @DanielDimitrov, переключив переключатель. возможно ли предоставить разрешение с помощью этого?
3. Я так не думаю. эти диалоговые окна разрешений контролируются системой. Вы не можете их обойти.
Ответ №1:
Вы можете запросить разрешение, переключившись только в одном случае, если пользователь нажал на опцию «Нет» или «Запретить», если он выбрал «Не спрашивать снова», тогда это невозможно (только в ios). Если он отключен, вам нужно перейти на страницу настроек.
async function requestPermissionForNotification() {
try {
const permission = await requestNotifications(["alert", "badge", "sound"]);
if (permission.status === "granted") {
setupNotification();
}
} catch (e) {
console.log(e)
}
Для достижения этой цели вы можете использовать различные библиотеки.
Импорт ссылок {Linking} из ‘react-native’;
Linking.openSettings();
Вы также можете использовать react-native-permission
. Ссылка [https://www.npmjs.com/package/react-native-permissions ]