#react-native #notifications #expo
#реагировать-родной #уведомления #экспо
Вопрос:
В моем приложении react native expo я успешно регистрируюсь в службе уведомлений Notifications.getExpoPushTokenAsync()
, и оно работает без проблем, мой вопрос в том, как мне перестать получать уведомления? Есть ли способ очистить push-токен только на устройстве?
Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь выходит из системы, а другой пользователь входит в систему на том же устройстве, они все равно будут получать уведомления предыдущих пользователей, поскольку устройство все еще зарегистрировано. Notifications.removePushTokenSubscription()
казалось, что это может сработать, но оно удаляет только созданный прослушиватель push-токенов Notifications.addPushTokenListener()
, который (я думаю) не связан с этой проблемой
Моя текущая попытка функции выхода из системы выглядит следующим образом:
const logOutUser = async(notificationToken) => {
if(notificationToken){
var subscription = await Notifications.addPushTokenListener(notificationToken);
await Notifications.removePushTokenSubscription(subscription);
}
}
Я неправильно думаю об этой проблеме? Спасибо!
Ответ №1:
Вы не можете отменить регистрацию в уведомлениях, нет функции, которая делает это просто потому, что токен expo связан с вашим устройством, а не с вашей учетной записью, вместо этого вы можете сделать это:
- При входе пользователя в систему вы должны отправить токен expo на свой серверный сервер и сохранить его в массиве expoTokens, потому что пользователь может открыть свою учетную запись на нескольких телефонах.
- Храните токен expo в своем AsyncStorage.
- При выходе пользователя из системы вы должны удалить токен expo из массива массива expoTokens в вашей серверной базе данных.
- и аккуратно удалите его из AsyncStorage .
Надеюсь, это сработает для вас!
Комментарии:
1. К сожалению, этого будет недостаточно, когда пользователь выходит из системы в автономном режиме. даже использование очереди фоновых служб для отмены регистрации токена при подключении пользователя к Сети не помешает получению уже отправленных уведомлений пользователем