2016-09-01 11 views
15

Я подписываюсь на тему, которая является моей версией приложения на Android.Отказ в состоянии при отправке сообщения FCM

FirebaseMessaging.getInstance().subscribeToTopic(APP_VERSION); 

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

"condition": "!'2.1.1' in topics", 

Это что-то вроде этого в FCM?

ответ

4

Вы можете настроить таргетинг только на пользователей на основе ли они подписались на тему, не будь они не подписаны.

Поскольку сопоставление подстановочных знаков доступно только в уведомлениях Firebase (для которых общедоступный API еще не существует), и консоль может отправлять только уведомления (которые действительно обрабатываются системой, если приложение не находится на переднем плане) ваши варианты будут ограничены работой.

Несколько я могу думать:

  1. отслеживать версию приложения, что каждый пользователь/идентификатор устройства установил в Map<Token, Version> подобной структуры. Для этого вы можете использовать базу данных Firebase.

  2. перечисляет все старые версии и направляет их с уведомлением.

  3. отправить сообщение с сообщением о выпуске новой версии всем пользователям (через API обмена облаками), а затем отключить отображение сообщения в onMessageReceived(), если у них уже установлена ​​последняя версия.

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

+0

Я уже буду идти с номером решения 3, как указано в комментарии другого ответа. – mjosh

2

В разделе «Без рубрики» не поддерживается операция «люди, не подписавшиеся на xxx».

Однако для вашего удобства (отправьте уведомление пользователям, которые не обновили), я бы предложил использовать уведомление Firebase (чтобы не путать с FCM, firebase cloud messaging), вы можете найти документ here.

Главное в том, что в консоли firebase вы можете фильтровать цели по версии приложения. См. Скриншот ниже этого particular part of the doc. Я тестировал его несколько раз в процессе производства, и он отлично работает. enter image description here

+0

Единственная проблема с консолью Firebase заключается в том, что уведомления доставляются на системный лоток устройства, когда приложение находится в фоновом режиме, и нет возможности его настроить. – mjosh

+0

Насколько я понимаю, вы можете настроить название и описание (и я думаю, звук), но это действительно так. Я уверен, что они добавят больше настроек в ближайшие месяцы, что вам интересно настроить? – Sistr

+0

Значок приложения и ожидающий намек. Я хочу, чтобы пользователь непосредственно загружался в Play Store вместо этого в мое приложение. Я обнаружил обходное решение вместо отрицания. Я изменю номер версии и сравню с номером версии, которую я отправляю через FCM. – mjosh

Смежные вопросы