Я храню пользовательские токены устройств FCM в Firebase. Когда пользователь входит в систему, токен добавляется в профиль пользователя следующим образом:
if (FirebaseAuth.getInstance().getCurrentUser()!=null) {
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
DeviceToken token = new DeviceToken(instanceIdResult.getToken());
CollectionReference deviceTokens = mUserCollection.document(mSignedInUserID).collection("device_tokens");
deviceTokens.document(token.getTokenID()).set(token);
}
});
}
Это работает. Однако я также хочу удалить этот документ, когда пользователь выходит из системы. Я пытаюсь сделать это так:
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
Log.d(TAG,instanceIdResult.getToken());
DocumentReference deactivatedToken = mUserCollection.document(mSignedInUserID).collection("device_tokens").document(instanceIdResult.getToken());
deactivatedToken.delete();
mAuth.signOut();
recreate();
}
});
В этом методе все работает, кроме фактического удаления этого документа, и оператор журнала подтверждает, что текущий идентификатор пользователя соответствует заголовку документа, который нужно удалить. Симуляция для зарегистрированного пользователя, записывающего данные в это местоположение, разрешена. Что я делаю не так?