![플러터(Flutter)로 앱출시까지 #37. Firebase를 이용한 푸시알림 전송](https://i.ytimg.com/vi/kWuixsHvE4E/hqdefault.jpg)
콘텐츠
- Google 클라우드 메시징은 어떻습니까?
- Android 프로젝트에 Firebase 추가
- 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 strings.xml 파일을 열고 MainActivity에서 참조하는 "fcm_token"문자열 리소스를 만듭니다. 이제 기기의 고유 토큰을 검색 할 수 있습니다.
- 기기의 토큰이 Logcat의 "디버그"섹션에 인쇄되므로 드롭 다운을 열고 "디버그"를 선택하십시오.
Logcat의 정보량에 따라 원하는 회선을 찾기가 어려울 수 있습니다. 어려움을 겪고 있다면 "토큰"이라는 단어를 검색하거나 앱을 닫았다가 다시 시작해보십시오.
토큰을 검색 한 후 토큰을 사용하여이 특정 장치에 푸시 알림을 보낼 수 있습니다.
- Firebase 콘솔로 이동하여 드롭 다운 메뉴에서 프로젝트를 선택하십시오 (아직없는 경우).
- 왼쪽 메뉴에서 "Cloud Messaging"을 선택하십시오.
- "새 알림"버튼을 클릭하십시오.
- 평소와 같이 제목과 텍스트를 입력 한 다음 "장치에서 테스트"를 클릭하십시오.
- "인스턴스 추가…"필드에 토큰을 복사 / 붙여 넣기 한 다음 나타나는 작은 파란색 "+"아이콘을 클릭하십시오.
- 토큰과 함께 제공되는 확인란을 선택하십시오.
- "테스트"를 클릭하십시오.
이 알림은 이제 대상 클라이언트 장치에만 나타납니다.
마무리
이 기사에서는 Firebase Cloud Messaging을 사용하여 Android 푸시 알림을 보내는 방법과 사용자 기반의 다른 섹션을 대상으로하는 알림을 만드는 방법을 설명했습니다.
자신의 안드로이드 프로젝트에서 FCM을 사용 하시겠습니까? 아래 의견에 알려주십시오!