Firebase Cloud Messaging으로 Android 푸시 알림 보내기

작가: Louise Ward
창조 날짜: 4 2 월 2021
업데이트 날짜: 1 칠월 2024
Anonim
플러터(Flutter)로 앱출시까지 #37. Firebase를 이용한 푸시알림 전송
동영상: 플러터(Flutter)로 앱출시까지 #37. Firebase를 이용한 푸시알림 전송

콘텐츠


이 자습서에서는 다루지 않지만 FCM을 사용하여 업스트림 알림, FCM에서 클라이언트 응용 프로그램으로부터 알림을 받거나 다운로드 할 수있는 새 데이터가있을 때 앱에 알릴 수 있습니다. 이런 식으로 앱 서버와 클라이언트 앱 간의 통신이 필요할 때만 발생하도록 할 수 있습니다. 이는 클라이언트 앱이 정기적으로 서버에 접속하는 것보다 훨씬 효율적입니다.

FCM은 Firebase의 일부이므로 다른 Firebase 서비스와도 잘 작동합니다. FCM 필수 사항을 익힌 후에는 A / B 테스트를 사용하여 가장 효과적인 알림을 식별하거나 Firebase 예측을 사용하여 다양한 FCM 캠페인에서 생성 된 모든 분석 데이터에 강력한 머신 러닝을 적용 할 수 있습니다.

FCM은 두 가지 유형의 s를 지원합니다.

  • 알림 클라이언트 애플리케이션은 FCM 수신시 백그라운드에 있는지 또는 포 그라운드에 있는지에 따라 다르게 작동합니다. 앱이 백그라운드에 있으면 Firebase SDK가 자동으로 처리하여 기기의 시스템 트레이에 알림으로 표시합니다. Android 시스템은 알림을 작성하므로 사용자에게 푸시 알림을 보내는 가장 쉬운 방법 중 하나입니다. 앱이 포 그라운드에있는 동안 FCM을 수신하면 시스템 습관 이 알림을 자동으로 처리하여 앱의 onReceived () 콜백에서 처리하도록합니다. 이 자습서의 뒷부분에서 onReceived ()를 살펴볼 예정이지만 지금은 앱이 포 그라운드에있는 동안 앱이 수신되면 기본적으로 사용자에게 표시되지 않는다는 점에 유의하십시오.
  • 데이터 알림과 달리 data를 사용하여 사용자 지정 데이터 요소를 클라이언트 응용 프로그램으로 보낼 수 있습니다. 그러나 FCM은 이러한 데이터에 대해 4KB 제한을 설정하므로 페이로드가 4KB를 초과하면 WorkManager 또는 JobScheduler API를 사용하여 추가 데이터를 가져와야합니다.

이 자습서에서는 알림에 중점을 둘 것입니다.


Google 클라우드 메시징은 어떻습니까?

Google 클라우드 메시징 (GCM) 서버 및 클라이언트 API를 사용하는 경우 몇 가지 나쁜 소식이 있습니다.이 서비스는 이미 지원이 중단되었으며 Google은 2019 년 4 월 "가장 많은"GCM 서비스를 중단 할 계획입니다. GCM을 사용하면 지금 프로젝트를 FCM으로 마이그레이션하기 시작해야하며 2019 년 4 월까지 마이그레이션을 완료해야합니다.

Android 프로젝트에 Firebase 추가

앱에 기본 FCM 지원을 추가하는 것이 얼마나 쉬운 지 살펴보고이를 사용하여 사용자에게 푸시 알림을 보냅니다.

FCM은 Firebase 서비스이므로 앱에 Firebase를 추가해야합니다.

  • Firebase 콘솔로 이동하십시오.
  • “프로젝트 추가”를 선택하고 프로젝트 이름을 지정하십시오.
  • 이용 약관을 읽으십시오. 계속 진행하려면“동의합니다…”와“프로젝트 생성”을 차례로 선택하십시오.
  • 'Android 앱에 Firebase 추가'를 선택하십시오.
  • 프로젝트 패키지 이름을 입력 한 다음 "앱 등록"을 클릭하십시오.
  • “google-services.json 다운로드”를 선택하십시오.
  • Android Studio에서 google-services.json 파일을 프로젝트의 "app"디렉토리로 끌어다 놓습니다.
  • 프로젝트 레벨 build.gradle 파일을 열고 다음을 추가하십시오.

classpath com.google.gms : google-services : 4.0.1

  • 앱 수준 build.gradle 파일을 열고 Google 서비스 플러그인과 Firebase Core 및 FCM에 대한 종속성을 추가합니다.

// Google 서비스 플러그인 추가 // 플러그인 적용 : com.google.gms.google-services……… 종속성 {구현 fileTree (dir : libs, include :) // Firebase Core // 구현 com.google.firebase 추가 : firebase-core : 16.0.1 // FCM // 구현 추가 com.google.firebase : firebase-messaging : 17.3.4

  • 프롬프트가 표시되면 변경 사항을 동기화하십시오.
  • 다음으로 Firebase 콘솔에 프로젝트에 Firebase가 성공적으로 추가되었음을 알려야합니다. 실제 Android 스마트 폰 또는 태블릿 또는 Android 가상 장치 (AVD)에 앱을 설치하십시오.
  • Firebase 콘솔로 돌아가서 '앱을 실행하여 설치 확인'을 선택하십시오.
  • Firebase가 앱을 감지하면 '축하합니다'가 표시됩니다. "콘솔 계속"을 선택하십시오.

Firebase로 첫 번째 푸시 알림 보내기

그리고 그게 다야! 이제 사용자에게 푸시 알림을 보낼 수 있으며 해당 알림이 기기의 시스템 트레이에 나타납니다 (현재는 앱이 게재 될 때 포 그라운드에 있지 않다고 가정합니다).


Firebase 콘솔을 통해 제공되는 Notifications Composer를 사용하여 FCM 알림을 생성합니다.

  • 앱이 백그라운드에서 설치되어 실행되고 있고 장치가 인터넷에 연결되어 있는지 확인하십시오.
  • Firebase 콘솔의 왼쪽 메뉴에서 "클라우드 메시징"을 선택하십시오.

  • "첫 번째 보내기"를 선택하십시오.
  • 제목과 본문을 적고 "다음"을 클릭하십시오.

  • “앱 선택”드롭 다운을 열고 목록에서 애플리케이션을 선택하십시오. 이 섹션에는 앱 버전, 기기의 로케일 및 사용자가 마지막으로 앱을 사용한 시간 등의 요인에 따라 대상 알림을 작성하는 데 사용할 수있는 고급 옵션도 포함되어 있습니다. 테스트 알림에는 이러한 옵션을 사용하지 않지만 사용 가능한 기능을 보려면 "and ..."를 선택하고 후속 드롭 다운을 탐색하십시오.

  • 이 섹션 편집을 마치면 "다음"을 클릭하십시오.
  • 이 내용을 즉시 보내려면 "적격 사용자에게 보내기"드롭 다운을 열고 "지금"을 선택하십시오.
  • 화면 오른쪽 하단에서 "게시"를 클릭하십시오.
  • 다음 팝업에서 모든 정보를 확인하고 계속 진행하려면 "게시"를 선택하십시오.

잠시 후 대상으로 지정한 모든 클라이언트 장치가 시스템 트레이에이 알림을 수신해야합니다.

대부분의 경우 FCM 알림이 즉시 전달되지만 a가 도착하는 데 몇 분이 걸릴 수 있으므로 알림이 지연되는 경우 당황하지 마십시오.

목표 설정 : 알림 전환 이벤트

알림을 만들 때 일반적으로 사용자가 앱을 다시 방문하도록 유도하거나 인앱 구매를 시작하도록 유도하거나 단순히 알림을 여는 등의 목표를 염두에 두어야합니다.

Notification Composer를 사용하여 알림에 목표를 할당 한 다음 FCM보고 대시 보드에서 해당 알림의 성과를 추적 할 수 있습니다.

목표를 설정하려면을 클릭하여 내비게이션 작곡가의 '전환 이벤트'섹션을 펼친 다음 해당 드롭 다운 메뉴를 열고 사용 가능한 전환 이벤트 중에서 선택하십시오.

알림이 성공 했습니까?

알림을 보낸 후 FCM보고 대시 보드에서 성과를 분석 할 수 있습니다. FCM보고 대시 보드는 새 메시지를 보낼 때마다 자동으로로드되거나 대시 보드에 직접 액세스 할 수 있습니다.

명시적인 전환 목표를 설정하지 않은 경우에도 게재 된 수와 열린 수를 비교하여 사용자가 알림을 수행 중인지 여부를 측정 할 수 있습니다.

이 목록에서 임의의 항목을 선택하여 전송, 열기 및 변환 데이터를 그래프로 볼 수 있습니다. 전환 목표를 설정하면 해당 목표와 관련된 통계도 볼 수 있습니다.

내 앱이 포 그라운드에 있으면 어떻게합니까?

FCM 알림은 클라이언트 응용 프로그램의 상태에 따라 다르게 작동합니다.

기본적으로 앱은 포 그라운드에있는 동안 수신 한 FCM을 표시하지 않으므로, 보낼 때 사용자가 실제로는 FCM을 보장하지 않습니다 만나다 그.

앱이있는 동안 앱이받는 작업을 수행하려면 전경, FirebaseMessagingService를 확장하고 onReceived 메소드를 재정의 한 다음 데이터 또는 알림을 사용하는지 또는 두 가지 모두에 따라 getNotification 또는 getData를 사용하여의 콘텐츠를 검색해야합니다.

“MyFirebaseMessagingService”라는 새 Java 클래스를 작성하고 다음을 추가하십시오.

공용 클래스 MyFirebaseMessagingService는 FirebaseMessagingService를 확장합니다. {@Override public void onReceived (Remote) {super.onReceived (remote);

또한 알림 개체를 만들어야합니다. 사용자가이 알림을받을 때마다 재생할 사운드를 선택하거나 사용자 지정 알림 아이콘을 적용하는 등 알림을 사용자 지정할 수 있습니다. 또한 데이터 또는 알림에서 콘텐츠를 검색해야합니다 (예 :

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder (this, "channel_id") .setContentTitle (remote.getNotification (). getTitle ()) .setContentText (remote.getNotification (). getBody ()) .setPriority (NotificationCompat.PRIORITY_DEFAULT)입니다. setStyle (new NotificationCompat.BigTextStyle ()) .setSound (RingtoneManager.getDefaultUri (RingtoneManager.TYPE_NOTIFICATION)) .setSmallIcon (R.mipmap.ic_launcher) .setAutoCancel (true); NotificationManager notificationManager = (알림 관리자) getSystemService (Context.NOTIFICATION_SERVICE); notificationManager.notify (0, notificationBuilder.build ()); }}

서비스를 만든 후에는 매니페스트에 추가해야합니다.

이제 앱이 포 그라운드에있는 동안 앱이 FCM을 수신 할 때마다 onReceived () 핸들러로 전달되고 앱은 알림 게시 또는 앱 콘텐츠 업데이트와 같이 사용자가 정의한 작업을 수행합니다.

더 매력적인 알림 : 사용자 타겟팅

지금까지 Google은 전체 사용자에게 동일한 알림을 전송했지만 특정 사용자를 대상으로하는 알림은 훨씬 더 매력적입니다.

Notification Composer를 사용하여 사용자 기반의 다른 부분으로 다른 알림을 보낼 수 있습니다. Notification Composer로 이동하여 정상적으로 알림을 작성하십시오. 그러나 "Target"섹션에서 "and"를 클릭하십시오. 그러면 다음 옵션이 포함 된 새 드롭 다운에 액세스 할 수 있습니다.

  • 번역. 이를 통해 특정 버전의 응용 프로그램을 실행하는 장치를 대상으로 지정하거나 제외 할 수 있습니다. 예를 들어 무료 버전을 사용하는 사람들에게 알림을 보내 앱의 프리미엄 버전으로 업그레이드하도록 권장 할 수 있습니다.
  • 언어. 이 설정을 사용하면 다른 시간대 나 언어에 맞게 알림을 생성하는 등 응용 프로그램에서 지원하는 다른 언어 및 로캘을 대상으로 지정하거나 제외 할 수 있습니다.
  • 사용자 청중. 이를 통해 잠재 고객의 다른 섹션을 타겟팅하거나 제외 할 수 있습니다. 예를 들어,이 설정을 사용하면 할인을 제공하거나 방금 출시 한 모든 놀라운 새로운 인앱 상품에 관심을 가져와 인앱 구매 내역을 가진 사람들을 유혹 할 수 있습니다.
  • 사용자 속성. Firebase 웹 로그 분석을 설정하면 사용자 속성을 통해 잠재 고객에 대한 다양한 정보에 액세스 할 수 있습니다. 이러한 속성을 FCM과 함께 사용하여 스포츠에 관심이있는 25-34 세 범위의 사람들과 같이 사용자 기반의 특정 섹션에 대상 알림을 보낼 수 있습니다.
  • 예측. Firebase 예측을 설정 한 경우 다음 7 일 동안 특정 행동에 참여할 가능성에 따라 사용자를 타겟팅 할 수 있습니다. 예를 들어, 예측에서 누군가 모바일 게임에서 이탈 할 가능성이 있다고 경고하면 FCM을 사용하여 새 퀘스트에 참여하도록 초대하거나 게임 내 통화를 보낼 수 있습니다.
  • 마지막 앱 참여. 사용자가 한동안 앱을 시작하지 않은 경우이 설정을 사용하여 몇 가지 알림을 보낼 수 있으며 앱에서 제공해야하는 모든 훌륭한 콘텐츠를 상기시키기 만하면됩니다.
  • 먼저 엽니 다. 이를 통해 사용자가 처음 앱을 열었을 때 알림을 보낼 수 있습니다. 예를 들어, 유용한 팁과 조언이 포함 된 알림을 보내 새로운 사용자에게 빠른 속도를 알려줄 수 있습니다.

등록 토큰으로 단일 장치 타겟팅

사용자의 나이, 관심사 및 마지막으로 앱을 사용한 시간과 같은 요소를 기반으로 타겟팅 된 알림을 보내는 방법을 이미 보았지만 고르다 좀더 구체적으로. 이 마지막 섹션에서는 FCM 알림을 단일 장치.

사용자가 앱을 처음 시작하면 FCM SDK가 해당 클라이언트 앱 인스턴스에 대한 등록 토큰을 생성합니다. FirebaseInstanceId.getInstance (). getInstanceId ()를 사용하여이 등록 토큰을 캡처 한 다음이 특정 토큰으로 알림을 보낼 수 있습니다.

실제 프로젝트에서는 일반적으로 앱 서버로 토큰을 보내고 선호하는 방법으로 토큰을 저장하여 토큰을 캡처하지만 간단하게 유지하려면이 토큰을 Android Studio의 Logcat에 인쇄하기 만하면됩니다.

완성 된 MainActivity는 다음과 같습니다.

import android.support.v7.app.AppCompatActivity; android.os.Bundle 가져 오기; import android.support.annotation.NonNull; import android.util.Log; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.iid.InstanceIdResult; 공용 클래스 MainActivity 확장 AppCompatActivity {개인 정적 최종 문자열 TAG = "MainActivity"; @Override protected void onCreate (번들 저장 인스턴스 상태) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); FirebaseInstanceId.getInstance (). getInstanceId () .addOnCompleteListener (새로운 OnCompleteListener() {@public void onComplete (@NonNull 작업 재정의 task) {if (! task.isSuccessful ()) {// 할 일 // return; } // 인스턴스 ID 토큰을 가져옵니다 .// String token = task.getResult (). getToken (); 문자열 msg = getString (R.string.fcm_token, token); Log.d (TAG, msg); }}); }}

strings.xml 파일을 열고 MainActivity에서 참조하는 "fcm_token"문자열 리소스를 만듭니다.

FCM 토큰 : % s

이제 기기의 고유 토큰을 검색 할 수 있습니다.

  • 연결된 Android 장치 또는 AVD에 프로젝트를 설치하십시오.
  • 'Logcat'탭 (커서가 다음 스크린 샷에 위치)을 선택하여 Android Studio의 Logcat을 엽니 다.

  • 기기의 토큰이 Logcat의 "디버그"섹션에 인쇄되므로 드롭 다운을 열고 "디버그"를 선택하십시오.

Logcat의 정보량에 따라 원하는 회선을 찾기가 어려울 수 있습니다. 어려움을 겪고 있다면 "토큰"이라는 단어를 검색하거나 앱을 닫았다가 다시 시작해보십시오.

토큰을 검색 한 후 토큰을 사용하여이 특정 장치에 푸시 알림을 보낼 수 있습니다.

  • Firebase 콘솔로 이동하여 드롭 다운 메뉴에서 프로젝트를 선택하십시오 (아직없는 경우).
  • 왼쪽 메뉴에서 "Cloud Messaging"을 선택하십시오.
  • "새 알림"버튼을 클릭하십시오.
  • 평소와 같이 제목과 텍스트를 입력 한 다음 "장치에서 테스트"를 클릭하십시오.

  • "인스턴스 추가…"필드에 토큰을 복사 / 붙여 넣기 한 다음 나타나는 작은 파란색 "+"아이콘을 클릭하십시오.
  • 토큰과 함께 제공되는 확인란을 선택하십시오.

  • "테스트"를 클릭하십시오.

이 알림은 이제 대상 클라이언트 장치에만 나타납니다.

마무리

이 기사에서는 Firebase Cloud Messaging을 사용하여 Android 푸시 알림을 보내는 방법과 사용자 기반의 다른 섹션을 대상으로하는 알림을 만드는 방법을 설명했습니다.

자신의 안드로이드 프로젝트에서 FCM을 사용 하시겠습니까? 아래 의견에 알려주십시오!

삼성은 삼성 갤럭시 8 기기 제품군에 빅스 비 버튼을 도입했다. 스크린 샷을 찍거나 미리 알림을 설정하는 것과 같은 기본 사항에 유용합니다. 그러나 실수로 많이 칠 수있는 버튼이기도하며 일반적인 의견은 Google Aitant가 더 좋습니다. 삼성은 비판을 듣고 Android 9.0 Pie 및 One UI 업데이트로 Bixby 버튼 리매핑을 도입했습니다....

업데이트 : 2 월 22 일 04:45 ET : 삼성은 갤럭시 10에 대한 빅스 비 버튼 커스터마이즈를 확인했지만 좋은 소식은 아니다. 또한 소프트웨어 업데이트를 통해 이전 플래그쉽에 커스터마이즈를 출시 할 것이라고 밝혔다. 자세한 내용은 여기를 참조하십시오....

새로운 기사