Я использую Firebase для отображения статуса своих ресторанов в сети и в автономном режиме, а также обновляю этот статус каждые 5 секунд через анонимный вход в систему. Для входа в систему требуется сервис воспроизведения, из-за чего у меня есть логин на устройстве с учетными данными Google.Я использую одни и те же учетные данные на нескольких устройствах без двухэтапной проверки в учетной записи, но если некоторые учетные записи имеют двухэтапную проверку того, что данные ресторанов не обновляются Вот мой код
private void signInAnnomymously() {
try {
if (mAuth == null)
mAuth = FirebaseAuth.getInstance();
mAuth.signInAnonymously()
.addOnCompleteListener(mAct, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Lg.d(TAG, "signInAnonymously:success");
FirebaseUser user = mAuth.getCurrentUser();
if (pref.isLoggedIn(instance)) {
// start handler for periodic online status
executeHandler();
}
} else {
// If sign in fails, display a message to the user.
Lg.w(TAG, "signInAnonymously:failure", task.getException());
// Toast.makeText(instance, "Authentication failed.",Toast.LENGTH_SHORT).show();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
Вот excuteHandler
private void executeHandler() {
if (handler == null && runnable == null) {
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
if (pref.isLoggedIn(instance)) {
setOnlineOfflineFireBase(AppConstants.STATUS_ONLINE);
}
handler.postDelayed(this, EVERY_FIVE_SECOND);
}
};
}
else {
handler.postDelayed(runnable, EVERY_FIVE_SECOND);
}
}