안드로이드 앱에서 실시간 데이터 업데이트를 위한 라이브 쿼리 활용하기
실시간 애플리케이션 사용하기 라이브 쿼리
소개
라이브 쿼리는 실시간 반응형 애플리케이션에서 사용되도록 설계되었으며, 전통적인 쿼리 패러다임을 사용하는 것에는 응답 시간 증가 및 높은 네트워크 및 서버 사용과 같은 몇 가지 문제가 발생할 수 있습니다. 라이브 쿼리는 데이터베이스에서 오는 최신 데이터로 페이지를 지속적으로 업데이트해야 하는 경우에 사용해야 하며, 이는 종종 온라인 게임, 메시징 클라이언트 및 공유 할 일 목록과 같은 경우에 발생하지만 이에 국한되지 않습니다.
이 섹션에서는 Back4App의 라이브 쿼리를 Android 환경에서 사용하는 방법을 설명합니다.
이 튜토리얼은 compileSdk 30 , minSdk 21 및 targetSdk 30
언제든지 GitHub 리포지토리를 통해 전체 프로젝트에 접근할 수 있습니다.
목표
우리가 달성할 목표의 미리보기입니다 :

전제 조건
이 튜토리얼을 완료하려면 다음이 필요합니다:
- Back4App에서 생성된 앱.
- Back4App에 연결된 안드로이드 앱.
1 - 라이브 쿼리 활성화
코딩을 시작하기 전에 라이브 쿼리를 활성화하기 위해 데이터베이스에 클래스가 필요합니다. 이를 위해 Back4App 웹사이트에서 앱을 찾고 대시보드 > 클래스 생성을 클릭하세요. 다음과 같이 표시됩니다:

이제 Live Query 기능을 활성화하려면 Back4App 웹사이트, 앱을 찾아 서버 설정, 그런 다음 “서버 URL 및 Live Query” 블록을 찾아 설정을 클릭하세요.

그럼 아래와 같은 페이지에 도착하게 됩니다. 이 페이지에서 Back4App 서브도메인 활성화 옵션과 라이브 쿼리 활성화 옵션 및 라이브 쿼리를 활성화할 모든 클래스를 선택해야 합니다, 아래와 같이:

라이브 쿼리를 사용하려면 웹 호스팅을 활성화해야 합니다, 왜냐하면 귀하의 도메인이 라이브 서버로 작동할 것이기 때문입니다.
2 - 라이브 쿼리 클라이언트 설정하기
Parse Server의 공식 GitHub에 라이브 쿼리 클라이언트 구현이 있습니다. 안드로이드용 공식 라이브 쿼리 클라이언트를 구현해야 합니다. 이를 위해 앱 app/build.gradle 파일의 종속성 섹션에 다음 줄을 추가하고 프로젝트를 동기화하세요:
1 dependencies {
2 ...
3 // Don't forget to change the line below with the latest version of Parse SDK for Android
4 implementation "com.github.parse-community.Parse-SDK-Android:parse:1.26.0"
5 implementation 'com.github.parse-community:ParseLiveQuery-Android:1.2.2'
6 ...
7 }이 프로젝트에서는 Message라는 클래스를 생성하여 메시지를 포함할 것입니다.
3 - 쿼리 구독하기
라이브 쿼리를 사용하려면 먼저 LiveQueryClient를 생성하여 웹소켓 연결을 관리해야 합니다. 이를 위해 애플리케이션 ID, JavaScript 키 및 첫 번째 단계에서 설정한 라이브 쿼리의 서버 URL을 제공해야 합니다.
1 Parse.initialize(new Parse.Configuration.Builder(this)
2 .applicationId(getString(R.string.back4app_app_id))
3 .clientKey(getString(R.string.back4app_client_key))
4 .server(getString(R.string.back4app_server_url))
5 .build());초기화 코드LiveQueryClient는 다음과 같습니다:
1 ParseLiveQueryClient parseLiveQueryClient = ParseLiveQueryClient.Factory.getClient();우리는 MessageAdapter. messageAdapter.* 함수는 객체가 추가, 삭제 또는 업데이트될 때 트리거됩니다. 여기서 우리의 messageAdapter 함수입니다.
1 public void addItem(ParseObject t) {
2 this.list.add(t);
3 notifyItemInserted(list.size() - 1);
4 }
5
6 public void removeItem(ParseObject object) {
7 for (int i = 0; i < list.size(); i++) {
8 if (list.get(i).getObjectId().equals(object.getObjectId())){
9 list.remove(i);
10 notifyItemRemoved(i);
11 notifyItemRangeChanged(i, list.size());
12 return;
13 }
14 }
15 }
16 public void updateItem(ParseObject object) {
17 for (int i = 0; i < list.size(); i++) {
18 if (list.get(i).getObjectId().equals(object.getObjectId())){
19 list.set(i,object);
20 notifyDataSetChanged();
21 return;
22 }
23 }
24 }그런 다음, 구독하고자 하는 객체의 유형에 대한 ParseQuery를 생성해야 합니다. 구독은 이벤트 발신기로, 쿼리를 만족하는 객체에 변화가 생길 때 이벤트를 발생시킵니다. 이 예제에서는 기본 쿼리를 만들고 Message 객체에 대한 모든 변경 사항을 구독할 것입니다.
쿼리 및 구독에 대한 자세한 내용은 Parse 공식 쿼리 문서.
1 ParseQuery<ParseObject> parseQuery = new ParseQuery<>("Message");
2 subscriptionHandling = parseLiveQueryClient.subscribe(parseQuery);
3 subscriptionHandling.handleSubscribe(q -> {
4 subscriptionHandling.handleEvent(SubscriptionHandling.Event.CREATE, (query, object) -> {
5 MainActivity.this.runOnUiThread(() -> {
6 messagesAdapter.addItem(object);
7 });
8 });
9 subscriptionHandling.handleEvent(SubscriptionHandling.Event.DELETE, (query, object) -> {
10 MainActivity.this.runOnUiThread(() -> {
11 messagesAdapter.removeItem(object);
12 });
13 });
14 subscriptionHandling.handleEvent(SubscriptionHandling.Event.UPDATE, (query, object) -> {
15 MainActivity.this.runOnUiThread(() -> {
16 messagesAdapter.updateItem(object);
17 });
18 });
19 });참고: 우리는 앱에서 모든 이벤트를 트리거합니다. 또한 Back4App(테이블 또는 자바스크립트 콘솔에서)에서 이 생성, 업데이트 및 삭제 이벤트를 트리거할 수 있습니다.
완료되었습니다!
이 시점에서, 당신은 Android 환경에서 실시간 반응형 애플리케이션을 만들기 위해 Live Queries를 사용하는 방법과 Back4App을 사용하여 Live Query를 설정하는 방법에 대한 지식을 가지고 있습니다. 이제 이를 자신의 앱에 구현하기 시작할 수 있습니다.
이제 Parse Server 핵심 기능 및 Back4App 추가 기능을 탐색할 준비가 되었습니다.