В своем игрушечном чат-приложении я хотел бы настроить способ отправки уведомлений пользователям, когда другие пользователи отправляют сообщения с помощью Firebase Google Cloud Messaging. В моем подходе я намереваюсь захватить маркеры регистрации устройств, а затем отправлять уведомления на эти устройства с помощью облачных функций Google. Кроме того, мое приложение требует, чтобы пользователи проходили аутентификацию.
Для захвата токенов в моей базе данных Firebase Realtime я подклассифицировал FirebaseInstanceIdService
следующим образом:
public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseInstanceIdService";
private static final String FCM_REG_TOKENS = "fcm_registration_tokens";
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "This device updated token: " + refreshedToken);
sendRegistrationTokenToServer(refreshedToken);
}
private void sendRegistrationTokenToServer(final String refreshedToken) {
DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference();
dbRef.child(FCM_REG_TOKENS).push().setValue(refreshedToken);
Log.d(TAG, "sendRegistrationTokenToServer: NEW TOKEN: " + refreshedToken );
}
}
Однако, похоже, что вышеуказанная служба запускается сразу после запуска приложения, даже до запуска SignInActivity. И на данный момент, очевидно, мне еще предстоит собрать сведения о пользователе Firebase для хранения токена в правильной базе данных.
У меня такое чувство, что я делаю это неправильно. Как правильно захватить токены регистрации устройств, чтобы отправлять уведомления на устройства с этими токенами?