2016-12-21 3 views
1

Раньше я никогда раньше не использовал FCM (или GCM), но я занимаюсь написанием приложения, которое будет включать публикацию сообщений на несколько устройств, а «темы» кажутся хорошим подходом.Публикация/подписка на темы FCM

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

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

ответ

1

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

Нет. Это не так. Но я настоятельно рекомендую вам сохранить регистрационные токены, чтобы вы могли отслеживать их, используя в будущем Diagnostics tool.

Что происходит, когда истекает срок действия токена - приложение снова должно подписаться на эту тему, используя новый токен?

В Android, вы просто должны вызвать

FirebaseMessaging.getInstance().subscribeToTopic(<topic_name_here>); 

подписываться устройство к теме. О том, как я понимаю эту работу, объясняется here, где класс FirebaseMessaging вызывает экземпляр FirebaseInstanceId и (предположительно) подписывает текущий активный токен регистрации.

Согласно @DiegoGiorgini's answer here, подписка на темы поддерживается, если токен обновлен.

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

Я бы предложил использовать его при запуске приложения. Лучше, если бы у вас был список тем (если их было несколько) на вашем сервере приложений и, возможно, воспользуйтесь InstanceID API для повторной подписки, если это необходимо.

+0

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

+1

@AndrewStephens Nope. Просто вызовите 'subscribeToTopic()' с клиентской стороны, и он будет использовать соответствующий токен. Ура! –

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