Вы можете просто использовать функцию, чтобы проверить, есть ли у вас сетевое соединение, пингуя серверы Google:
/system/bin/ping -c 1 8.8.8.8
В Android эта функция выглядит следующим образом:
public boolean isNetworkAvailable() {
Runtime runtime = Runtime.getRuntime();
try {
Process process = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
int exitValue = process.waitFor();
return (exitValue == 0);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
return false;
}
В Firestore автономное сохранение включено по умолчанию. Таким образом, вы можете проверить, читает ли пользователь данные из кэша или с серверов Firebase. Более элегантный способ - использовать функцию isFromCache()
. Это код для Android:
yourDocRef.addSnapshotListener(new DocumentListenOptions().includeMetadataChanges(), new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(DocumentSnapshot documentSnapshot, FirebaseFirestoreException e) {
Log.d("listener.isFromCache: " + documentSnapshot.getMetadata().isFromCache());
}
});