Как отписаться (удалить слушателя) от push-уведомлений React Native Expo

Я хочу дать пользователям возможность отписаться от уведомлений. Я уже ознакомился с документацией Expo, но до сих пор не знаю, как реализовать ее в своем коде.

Вот что я хочу реализовать: https://docs.expo.io/versions/latest/sdk/notifications/#eventsubscription

Notifications.addListener(listener) EventSubscription а затем удалить() (функция) -- отписать слушателя от будущих уведомлений. Уведомление

Вот метод componentDidMount:

  componentDidMount() {
registerForPushNotificationsAsync();

// Handle notifications that are received or selected while the app
// is open. If the app was closed and then opened by tapping the
// notification (rather than just tapping the app icon to open it),
// this function will fire on the next tick after the app starts
// with the notification data.
this._notificationSubscription = Notifications.addListener(this._handleNotification);

}

Некоторая помощь была бы очень здоровой

Наилучшие пожелания Мусайаб

звоните this._notificationSubscription.remove()

bamtheboozle 25.02.2019 15:20

Ага, я тоже об этом думал, хватит? А что, если я настраиваю свои уведомления на другой странице, и у меня есть кнопка для отмены подписки на другой странице, как я тогда вызову функцию?

Musayyab Naveed 25.02.2019 15:25

передать это как опору

bamtheboozle 25.02.2019 15:40

Я звоню this._notificationSubscription.remove(); но все еще получаю уведомления

Musayyab Naveed 25.02.2019 22:16

Да, вы продолжите получать уведомления. Когда вы remove, this._handleNotification не должны звонить.

10101010 26.02.2019 02:59

@ 10101010 то, что вы говорите, несколько противоречит документам. Ум объяснить?

Godfrey 13.05.2019 17:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
6
3 573
1

Ответы 1

Просто быстрый ответ, так как я думаю, что в большинстве ответов или комментариев, по крайней мере, отсутствует ваша точка зрения. Вы можете остановить приложение, прослушивающее уведомления, выполнив это._notificationSubscription.remove(); Но я предполагаю, что вы ищете способ отписать пользователя от всех будущих уведомлений (то, что вы обычно предлагаете в меню настроек или меню параметров, чтобы вы не спамили пользователя, если они просят ваше приложение не отправлять им уведомления), это конечно, это можно сделать на большинстве телефонов из фактических настроек телефона, и поэтому ваше приложение должно подчиняться этому запросу, или магазины приложений, такие как Google и Apple, не позволят вашему приложению вообще отправлять уведомления любому пользователю независимо от состояния подписки.

В настоящее время единственный способ справиться с этим — на стороне сервера для удаленных уведомлений, локальные — вы можете просто использовать asyncstorage для хранения настроек и ссылаться на них перед отправкой любых уведомлений по времени. Вы захотите настроить вызов своего сервера уведомлений, чтобы удалить токен уведомления из вашей базы данных, что предотвратит отправку вашей системой на это устройство каких-либо уведомлений в будущем.

Хороший ответ. Подписка на уведомления не о том, получать или не получать уведомления, это способ управления уже полученными уведомлениями. Если вы не хотите, чтобы ваш пользователь получал уведомление, вам просто нужно не отправлять его со стороны сервера.

fbaudet 25.02.2020 08:59

Другие вопросы по теме