firebase
Firebase 오프라인 기능
수색…
소개
이 글에서는 Firebase
사용할 때 오프라인 기능을 구현하는 여러 가지 방법과 Android 플랫폼에서 오프라인 기능과 예제를 사용할 수있는시기와 이유에 대한 정보를 제공합니다.
비고
무엇을 사용해야합니까? 디스크 지속성 또는 keepSynced 호출?
내 경험에 비추어 볼 때 항상 앱의 작동 방식과 애플리케이션의 트랜잭션 및 데이터베이스를 관리하는 방식에 따라 다르다고 말할 수 있습니다. 예를 들어 사용자가 데이터를 쓰고 읽는 중이지만 삭제하거나 편집 할 수없는 응용 프로그램이있는 경우 DiskPersistence
사용하는 것이 좋습니다.
또한 DiskPersistence
는 캐시에 데이터를 저장합니다. 즉, 앱이 사용자의 기기에서 더 많은 공간을 사용하게되는 경우가 있습니다.
반면에 응용 프로그램이 복잡한 트랜잭션을 많이 관리하고 데이터가 실제로 자주 업데이트되는 경우 DiskPersistence
를 피하고 keepSynced
를 새로 유지하려는 참조에 사용해야합니다.
왜?
DiskPersistence
는 로컬에서 검색된 데이터를 저장합니다. 연속 된 ListenerValueEvents
와 함께 사용하지 않으면 데이터를 보여주는 많은 동기화 해제가 발생할 수 있습니다. 예 :
- 사용자 A는 앱에 "Hello World"라는 메시지를 작성합니다.이 메시지는 사용자 B에게 전달됩니다.
- 사용자 B가 자신의 휴대 전화에서 사용자 A의 메시지를 다운로드하고 "Hello World"메시지를 봅니다.
- 사용자 편집은 "Firebase is cool"에 대한 그의 메시지입니다.
- 사용자 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