У меня есть приложение, которое создает токен FCM, когда приложение запускается в первый раз, после чего токен сохраняется в базе данных firebase под номером мобильного телефона.
Процедура сохранения данных в базе данных состоит в том, чтобы сначала получитьданные из базы данных, а затем в onDataChange()
он должен обновить данные, если он уже выходит, в противном случае данные создаются заново.
Теперь проблема заключается в следующем: когда я открываю приложение, используя номер мобильного телефона «1234» ив маркере базы данных против этого, скажем, «1». Теперь, если я открою приложение на другом мобильном телефоне, используя тот же номер, т. Е. «1234», токен на другом устройстве, скажем, «2». В базе данных токен с номером 1234 должен обновиться с «1» до «2», но этого не происходит. Фактически, когда данные обновляются до 2, затем снова они преобразуются в 1, затем снова 2, затем 1, затем снова 2 и т. Д.
Я хочу, если для номера мобильного телефона генерируется новый токен, то он должен быть обновлен.
Это мой код:
tokenZ = new Token();
SharedPreferences sharedPreferenceZ =activity.getSharedPreferences(cmn.SHARED_SPNAME,MODE_PRIVATE);
final String tokens = sharedPreferenceZ.getString(cmn.RegistrationTokenforFirebase, "1");
final DatabaseReference database = FirebaseDatabase.getInstance().getReference();
final DatabaseReference databaseChild = FirebaseDatabase.getInstance().getReference().child("" + UserID);
database.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Map<String, Object> oldData = (Map<String, Object>) dataSnapshot.getValue();
if (oldData != null) {
System.out.println("oldDD" + oldData.get(UserID));
System.out.println("oldDDy" + "{token=" + tokens + "}");
if (oldData.get(UserID) != null) {
System.out.println("Number already");
Map<String, Object> currentData = (Map<String, Object>) oldData.get(UserID);
if (oldData.get(UserID).toString().equals("{token=" + tokens + "}")) {
System.out.println("Token already");
currentData.put("token", tokens);
databaseChild.updateChildren(currentData);
} else {
System.out.println("New Token");
// databaseChild.removeValue();
tokenZ.setToken(tokens);
databaseChild.setValue(tokenZ);
FirebaseMessaging.getInstance().setAutoInitEnabled(false);
}
} else {
System.out.println("New Number");
tokenZ.setToken(tokens);
databaseChild.setValue(tokenZ);
}
} else {
tokenZ.setToken(tokens);
databaseChild.setValue(tokenZ);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});