수색…


소개

이 글에서는 Firebase 사용할 때 오프라인 기능을 구현하는 여러 가지 방법과 Android 플랫폼에서 오프라인 기능과 예제를 사용할 수있는시기와 이유에 대한 정보를 제공합니다.

비고

무엇을 사용해야합니까? 디스크 지속성 또는 keepSynced 호출?


내 경험에 비추어 볼 때 항상 앱의 작동 방식과 애플리케이션의 트랜잭션 및 데이터베이스를 관리하는 방식에 따라 다르다고 말할 수 있습니다. 예를 들어 사용자가 데이터를 쓰고 읽는 중이지만 삭제하거나 편집 할 수없는 응용 프로그램이있는 경우 DiskPersistence 사용하는 것이 좋습니다.

또한 DiskPersistence 는 캐시에 데이터를 저장합니다. 즉, 앱이 사용자의 기기에서 더 많은 공간을 사용하게되는 경우가 있습니다.

반면에 응용 프로그램이 복잡한 트랜잭션을 많이 관리하고 데이터가 실제로 자주 업데이트되는 경우 DiskPersistence 를 피하고 keepSynced 를 새로 유지하려는 참조에 사용해야합니다.

왜?


DiskPersistence 는 로컬에서 검색된 데이터를 저장합니다. 연속 된 ListenerValueEvents 와 함께 사용하지 않으면 데이터를 보여주는 많은 동기화 해제가 발생할 수 있습니다. 예 :

  1. 사용자 A는 앱에 "Hello World"라는 메시지를 작성합니다.이 메시지는 사용자 B에게 전달됩니다.
  2. 사용자 B가 자신의 휴대 전화에서 사용자 A의 메시지를 다운로드하고 "Hello World"메시지를 봅니다.
  3. 사용자 편집은 "Firebase is cool"에 대한 그의 메시지입니다.
  4. 사용자 B는 데이터를 업데이트하더라도 Firebase 필터가있을 때 스냅 샷 참조가 동일하기 때문에 "Hello World"메시지를 계속 보게됩니다.

이것을 피하기 위해서는 모든 시간을 추적하고자하는 참조에 연속 리스너를 유지하는 것이 가장 좋습니다.

둘 다 함께 사용할 수 있습니까?


당연히 당신은 할 수 있고 대부분의 어플리케이션에서 많은 데이터를 다운로드하지 말고 아무런 연결이 없더라도 사용자가 앱으로 작업 할 수있는 가능성을 부여하는 것이 가장 좋은 방법 일 수 있습니다.

사용자 장치에서 캐시 공간 사용에 신경 쓰지 않는다면 FirebaseDatabase 객체에서 diskPersistence 를 활성화하고 짧은 시간 내에 많은 시간을 가질 수있는 keepSync 플래그를 각 참조에 추가하거나 모든 시간을 신선한 상태로 유지하십시오.

디스크 지속성 사용 (Android / iOS 전용)

디스크 지속성을 활성화하려면 응용 프로그램의 FirebaseDatabaseInstance 객체에서 플래그 persistenceEnabled 를 활성화해야합니다.

기계적 인조 인간

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

iOS

Database.database().isPersistenceEnabled = true //Swift
[FIRDatabase database].persistenceEnabled = YES; //Objetive-C

앱 수명주기의 일부 순간에서 지속성을 사용 중지하려면 동일한 방식으로 사용 중지해야합니다.

기계적 인조 인간

FirebaseDatabase.getInstance().setPersistenceEnabled(false);

iOS

Database.database().isPersistenceEnabled = false //Swift
[FIRDatabase database].persistenceEnabled = NO; //Objetive-C

데이터를 최신으로 유지 (Android / iOS 전용)

Firebase는 모바일 장치에서 사용될 때 활성 리스너를위한 데이터의 로컬 복사본을 동기화하고 저장합니다. 또한 특정 위치를 동기화 상태로 유지할 수 있습니다.

Android :

DatabaseReference workoutsRef = FirebaseDatabase.getInstance().getReference("workouts");
scoresRef.keepSynced(true);

아이오와 :

//Objetive-c
FIRDatabaseReference *scoresRef = [[FIRDatabase database] referenceWithPath:@"scores"];
[scoresRef keepSynced:YES];
//Swift
let scoresRef = Database.database().reference(withPath: "scores")
scoresRef.keepSynced(true)

Firebase 클라이언트는이 위치에서 자동으로 데이터를 다운로드하고 참조에 활성 리스너가없는 경우에도 업데이트 된 상태로 유지합니다. 다음 코드 줄을 사용하여 동기화를 사용하지 않도록 설정합니다.

Android :

scoresRef.keepSynced(false);

iOS :

[scoresRef keepSynced:NO]; //Objetive-C
scoresRef.keepSynced(false) //Swift


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow