Я только что обновил GCM до FCM в соответствии с этим руководством здесь. На сайте говорится, что моя служба, которая расширяет FirebaseInstanceIdService, будет вызываться, как только будет создан токен. По какой-то причине моя служба никогда не вызывается и onTokenRefresh
никогда не выполняется.
Мои услуги регистрируются следующим образом, согласно руководству:
<service android:name=".fcm.FcmService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".fcm.InstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCEID_EVENT"/>
</intent-filter>
</service>
Мой сервис:
public class InstanceIdService extends FirebaseInstanceIdService {
private static final String TAG = "InstanceIdService";
@Override
public void onTokenRefresh() {
String token = FirebaseInstanceId.getInstance().getToken();
Log.e(TAG, "Got token: " + token);
}
}
LogCat ничего не говорит о отсутствующих файлах конфигурации, а также о журналах FirebaseApp и записи в журнале, в которых упоминается токен, но мой сервис никогда не вызывается.
Нужно ли мне начинать эту службу где-то в моей деятельности? Я делаю что-то неправильно? Может ли кто-нибудь вести меня в правильном направлении?
EDIT: с помощью Log.e("TOKEN", "Token: " + FirebaseInstanceId.getInstance().getToken());
правильно печатает мой токен, так что это означает, что он был сгенерирован успешно. Служба по-прежнему не называется...
ИЗМЕНИТЬ 2: Изменение INSTANCEID_EVENT на INSTANCE_ID_EVENT устранило проблему, хотя мне пришлось переустановить приложение. Поскольку я уже выпустил бета-версию, содержащую новый FCM, мои бета-тестеры не смогут подписаться на темы, чтобы выявлять входящие сообщения. Итак, как мне это решить?