Получить статус разрешения на уведомление и программно включить уведомление на экране настроек приложения

#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 ]