튜토리얼: 카우치베이스 모바일 앱에서 안드로이드 푸시 알림 구현하기

애플리케이션을 개발할 때는 연속 모드에서 푸시 및 풀 복제를 사용하는 것이 매우 유용합니다. 앱과 동기화 게이트웨이가 항상 최신 문서를 동기화할 수 있도록 모든 것이 리플리케이터에 의해 처리됩니다.

그러나 지속적인 풀 복제는 Couchbase Lite가 동기화 게이트웨이에서 가져올 새 데이터가 있는지 확인하기 위해 긴 폴링 또는 웹 소켓과 같은 기술을 사용한다는 것을 의미합니다. 이는 배터리 수명과 결과적으로 사용자 경험에 영향을 미칠 수 있습니다.

이 게시물에서는 Android의 푸시 알림 서비스인 Google 클라우드 메시징을 사용하여 연속 풀 복제에 대한 대안을 살펴봅니다.

다음에서 확인할 수 있습니다. 작업 예제 를 추가했습니다. 애플리케이션에 GCM 동기화를 포함하는 방법을 알아보세요!

앱에서 GCM 활성화하기

먼저 Google 클라우드 메시징에 등록하도록 ToDoLite Android를 구성해 보겠습니다. 새 Google API 프로젝트를 생성하고 개발자 콘솔. 다음을 따르십시오. 가이드 를 클릭하여 설정합니다. 프로젝트 번호와 API 키가 있어야 합니다. 이제 프로젝트의 AndroidManifest.xml 에 필요한 권한, 인텐트 필터 및 서비스를 추가합니다. 다음과 같이 표시되어야 합니다:

참고: 다음 내용을 확인하세요. 예제 를 안드로이드 개발자 사이트에서도 사용할 수 있습니다.

프로젝트가 올바르게 구성된 경우 Google 개발자 콘솔에서 앱을 만들 때 받은 프로젝트 번호로 디바이스 토큰을 검색할 수 있습니다. 예를 들어 메인 활동에 메소드를 추가하여 GCM에서 디바이스 토큰을 검색하고 사용자 프로필 문서에 저장합니다:

참고: Android의 디바이스 토큰은 항상 APA91로 시작하므로 LogCat에서 이를 주시하세요.)

다음으로 수신 알림을 처리하기 위해 몇 가지 코드를 추가해야 합니다. 알림을 수신할 때마다 onReceive 메서드가 호출되는 WakefulBroadcastReceiver 클래스를 서브클래싱했습니다.

거기서부터 깨어 있는 서비스는 GcmMessageHandler 클래스를 시작하고 원샷 풀 복제를 수행합니다. 깨어있는 서비스는 앱이 백그라운드에서 실행 중이더라도 실행됩니다. 그러면 앱을 열 때 앱이 그에 따라 새 데이터를 표시합니다.

복제 변경 리스너를 사용하여 복제 변경이 완료되면 알림을 받고 깨어 있는 서비스를 종료합니다.

Android 쪽에서 동기화 알림을 처리하기 위해 해야 할 일은 이것뿐입니다.

디바이스 토큰 저장하기

이제 사용자 프로필 문서에 디바이스 토큰을 저장할 수 있습니다. 각 사용자는 한 번에 두 개 이상의 디바이스에 로그인할 수 있으므로 각각의 디바이스를 저장해야 합니다. 사용자 문서는 다음과 같습니다:

다음 섹션에서는 변경사항 피드를 사용하여 동기화 게이트웨이에 추가 애플리케이션 로직을 추가하는 방법에 대해 설명합니다.

동기화 게이트웨이가 피드를 변경합니다.

그리고 /데이터베이스/변경 엔드포인트는 데이터베이스의 문서에 적용된 변경 사항의 정렬된 목록을 반환합니다. 이 엔드포인트는 CouchDB의 일부입니다. 사양 그리고 Couchbase Lite 리스너와 동기화 게이트웨이 모두 이를 구현합니다.

동기화 게이트웨이의 변경 피드에 연결하여 푸시 알림을 보내는 등 백엔드에 추가 로직을 추가하는 것은 매우 쉽습니다.

변경 피드 API를 구현하는 모든 라이브러리를 사용할 수 있습니다:

모든 사용 가능한 매개 변수 쿼리 문자열에서 가장 중요한 것은 다음과 같습니다:

  • 피드=연속으로 설정하여 변경 사항을 즉시 가져오도록 합니다.
  • 이후=지금'을 사용하면 현재 시간의 변경 사항을 가져오고, 그렇지 않으면 데이터베이스가 생성된 이후의 모든 변경 사항을 기록합니다!

마지막으로 퍼즐의 마지막 조각인 변경 사항 피드에서 문서가 변경되면 사용자 프로필 문서를 가져와야 합니다."관심" 디바이스 토큰을 보유하고 있기 때문입니다.

피드 변경 → GCM

ToDoLite에는 프로필, 목록, 작업의 세 가지 문서 유형이 있습니다. 작업 문서에는 해당 문서가 속한 목록에 대한 참조가 있고 목록에는 소유자와 구성원 배열이 있습니다.

작업 문서나 목록 문서가 변경되면 해당 목록의 소유자와 구성원에게 알림을 보내고 싶습니다. 처리하고자 하는 이벤트에는 두 가지 유형이 있습니다:

1. 목록 문서 변경 이벤트:

  • 소유자의 프로필 문서 가져오기
  • 각 멤버의 프로필 문서 가져오기

2. 작업 문서 변경 이벤트:

  • 목록이 속한 문서 가져오기
  • 1)과 동일한 단계를 따릅니다.

디바이스 토큰을 검색한 후 마지막 단계는 API 키와 알림 페이로드를 사용하여 Google 클라우드 메시징 서버에 요청을 보내는 것입니다. GitHub에서 GCM 서버와 간단하게 상호 작용할 수 있는 많은 라이브러리를 찾을 수도 있습니다:

마무리

Google 클라우드 메시징을 사용하여 서버 측에서 데이터 가져오기를 트리거하면 추가적인 배터리 및 네트워크 사용 오버헤드 없이도 뛰어난 사용자 경험을 제공할 수 있습니다.

다음을 따르십시오. README 를 클릭해 ToDoLite 데모를 실행하세요.

앱에서 Google 클라우드 메시징 알림을 어떻게 사용하고 계신지 알고 싶습니다. 아래 댓글로 알려주세요!

자세히 알아보기:

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 제임스 노센티니, 모바일 테크니컬 라이터, Couchbase

제임스 노센티니는 카우치베이스 모바일의 문서를 담당하는 테크니컬 라이터입니다. 이전에는 개발자 지원 담당자로 일했으며 그 전에는 HouseTrip의 프론트엔드 개발자로 일했습니다. 또한 여가 시간에는 raywenderlich.com에 안드로이드 튜토리얼을 작성하는 것을 즐깁니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.