Android
Real Time
안드로이드 앱에서 실시간 데이터 업데이트를 위한 라이브 쿼리 활용하기
10 분
실시간 애플리케이션 사용하기 라이브 쿼리 소개 라이브 쿼리는 실시간 반응형 애플리케이션 에서 사용되도록 설계되었으며, 전통적인 쿼리 패러다임을 사용하는 것에는 응답 시간 증가 및 높은 네트워크 및 서버 사용과 같은 몇 가지 문제가 발생할 수 있습니다 라이브 쿼리는 데이터베이스에서 오는 최신 데이터로 페이지를 지속적으로 업데이트해야 하는 경우에 사용해야 하며, 이는 종종 온라인 게임, 메시징 클라이언트 및 공유 할 일 목록과 같은 경우에 발생하지만 이에 국한되지 않습니다 이 섹션에서는 back4app 의 라이브 쿼리를 android 환경에서 사용하는 방법을 설명합니다 이 튜토리얼은 compilesdk 30 compilesdk 30 , minsdk 21 minsdk 21 및 targetsdk 30 targetsdk 30 언제든지 github 리포지토리를 통해 전체 프로젝트에 접근할 수 있습니다 코틀린 예제 리포지토리 자바 예제 리포지토리 목표 우리가 달성할 목표의 미리보기입니다 전제 조건 이 튜토리얼을 완료하려면 다음이 필요합니다 안드로이드 스튜디오 back4app에서 생성된 앱 참고 새 parse 앱 튜토리얼 을 따라 back4app에서 parse 앱을 만드는 방법을 배우세요 back4app에 연결된 안드로이드 앱 참고 parse sdk 설치 튜토리얼 을 따라 back4app에 연결된 android studio 프로젝트를 만드세요 android 4 1 (젤리빈) 이상을 실행하는 장치(또는 가상 장치 )입니다 1 라이브 쿼리 활성화 코딩을 시작하기 전에 라이브 쿼리를 활성화하기 위해 데이터베이스에 클래스가 필요합니다 이를 위해 back4app 웹사이트 에서 앱을 찾고 대시보드 대시보드 > 클래스 생성 클래스 생성 을 클릭하세요 다음과 같이 표시됩니다 이제 live query 기능을 활성화하려면 back4app 웹사이트 , 앱을 찾아 서버 설정 서버 설정 , 그런 다음 “서버 url 및 live query” 블록을 찾아 설정 설정 을 클릭하세요 그럼 아래와 같은 페이지에 도착하게 됩니다 이 페이지에서 back4app 서브도메인 활성화 back4app 서브도메인 활성화 옵션과 라이브 쿼리 활성화 라이브 쿼리 활성화 옵션 및 라이브 쿼리를 활성화할 모든 클래스를 선택해야 합니다, 아래와 같이 라이브 쿼리를 사용하려면 웹 호스팅 을 활성화해야 합니다, 왜냐하면 귀하의 도메인이 라이브 서버로 작동할 것이기 때문입니다 참고 웹 호스팅에 대해 더 알고 싶다면 back4app 웹 호스팅 튜토리얼 2 라이브 쿼리 클라이언트 설정하기 parse server의 공식 github 에 라이브 쿼리 클라이언트 구현이 있습니다 안드로이드 https //github com/parse community/parselivequery android 용 공식 라이브 쿼리 클라이언트를 구현해야 합니다 이를 위해 앱 app/build gradle app/build gradle 파일의 종속성 섹션에 다음 줄을 추가하고 프로젝트를 동기화하세요 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 message 라는 클래스를 생성하여 메시지를 포함할 것입니다 3 쿼리 구독하기 라이브 쿼리를 사용하려면 먼저 livequeryclient 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());1 parse initialize(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 livequeryclient 는 다음과 같습니다 1 parselivequeryclient parselivequeryclient = parselivequeryclient factory getclient();1 val parselivequeryclient = parselivequeryclient factory getclient() 우리는 messageadapter messageadapter 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 }1 fun additem(t parseobject?) { 2 list!! add(t!!) 3 notifydatasetchanged() 4 } 5 6 fun removeitem(`object` parseobject) { 7 for (i in list!! indices) { 8 if (list!!\[i] objectid == `object` objectid) { 9 list!! removeat(i) 10 notifyitemremoved(i) 11 notifyitemrangechanged(i, list!! size) 12 return 13 } 14 } 15 } 16 17 fun updateitem(`object` parseobject) { 18 for (i in list!! indices) { 19 if (list!!\[i] objectid == `object` objectid) { 20 list!!\[i] = `object` 21 notifydatasetchanged() 22 return 23 } 24 } 25 } 그런 다음, 구독하고자 하는 객체의 유형에 대한 parsequery parsequery 를 생성해야 합니다 구독은 이벤트 발신기로, 쿼리를 만족하는 객체에 변화가 생길 때 이벤트를 발생시킵니다 이 예제에서는 기본 쿼리를 만들고 message 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 });1 val parsequery = parsequery\<parseobject>("message") 2 subscriptionhandling = parselivequeryclient!! subscribe(parsequery) 3 subscriptionhandling!! handlesubscribe { subscriptionhandling!! handleevent(subscriptionhandling event create 4 ) { parsequery\<parseobject?>?, `object` parseobject? > 5 runonuithread { messagesadapter!! additem(`object`) } 6 } 7 subscriptionhandling!! handleevent(subscriptionhandling event delete 8 ) { parsequery\<parseobject?>?, `object` parseobject? > 9 runonuithread { messagesadapter!! removeitem(`object`!!) } 10 } 11 subscriptionhandling!! handleevent(subscriptionhandling event update 12 ) { parsequery\<parseobject?>?, `object` parseobject? > 13 runonuithread { messagesadapter!! updateitem(`object`!!) } 14 } 15 } 참고 우리는 앱에서 모든 이벤트를 트리거합니다 또한 back4app(테이블 또는 자바스크립트 콘솔에서)에서 이 생성, 업데이트 및 삭제 이벤트를 트리거할 수 있습니다 완료되었습니다! 이 시점에서, 당신은 android 환경에서 실시간 반응형 애플리케이션을 만들기 위해 live queries를 사용하는 방법과 back4app을 사용하여 live query를 설정하는 방법에 대한 지식을 가지고 있습니다 이제 이를 자신의 앱에 구현하기 시작할 수 있습니다 이제 parse server 핵심 기능 https //www back4app com/product/parse server 및 back4app 추가 기능 https //www back4app com/product/addons 을 탐색할 준비가 되었습니다