Отменить подписку на все темы сразу из Firebase Messaging

Можно ли отказаться от подписки на все темы сразу?

Я использую Firebase Messaging для получения push-уведомления от некоторых подписчиков, и мне почему-то нужно отказаться от подписки на все темы, не отпираясь подпиской по одному. Возможно ли это?

Ответ 1

Вы можете использовать API-интерфейс экземпляра для запроса всех доступных тем, подписанных на данный токен, а также для вызова нескольких запросов для отмены подписки на все темы.

Однако, если вы хотите прекратить получать из всех тем, а затем токен не полезен вообще, вы можете вызвать FirebaseInstanceId.deleteInstanceId() (ссылка: deleteInstanceId()), который будет reset идентификатором экземпляра, а затем вы можете подписаться на новые темы из нового идентификатора экземпляра и токена.

Надеюсь, это поможет кому-то.

Ответ 2

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

final FirebaseMessaging messaging= FirebaseMessaging.getInstance();
      FirebaseDatabase.getInstance().getReference().child("topics").addChildEventListener(new ChildEventListener() {
          @Override
          public void onChildAdded(DataSnapshot dataSnapshot, String s) {
              String topic  = dataSnapshot.getValue(String.class);
              messaging.unsubscribeFromTopic(topic);
}...//rest code

Ответ 3

Вы можете использовать:

FirebaseMessaging.getInstance().unsubscribeFromTopic("Topic name");