FCM(Firebase Cloud Message)에 대해서 알아보겠습니다.
Firebase 클라우드 메시징(FCM)은 무료로 메세지를 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션
FCM을 통하여 새 이메일, 기타 데이터를 동기화 할 수 있음, 또 알림을 통하여 사용자를 유지하고 재참여 유도가능
한번의 메세지로 최대 4,000바이트의 페이로드를 클라이언트 앱에 전송가능
1편에서는 Firebase셋팅하는 방법에 대해서 알아보겠습니다.
참고자료:
https://firebase.google.com/docs/cloud-messaging?hl=ko
1. Firebase 설정
● 인터넷창에 https://console.firebase.google.com 을 입력하여 Firebase접속
● 프로젝트 이름 입력
● 프로젝트 만들기를 클릭하여 프로젝트 Firebase프로젝트 생성을 완료
● 생성한 프로젝트 클릭
● 프로젝트에서 사용할 "앱 추가"
● Android 선택
● 3가지 내용 작성(바로 아래에 자세하게 설명하니 잘 따라와 주세요)
1-1. Android 패키지이름
- FCM을 사용할 안드로이드 프로젝트의 "AndroidManifest.xml"의 package를 확인하여 입력
1-2. 앱 닉네임(선택사항)
- 나중에 AOS, IOS앱들을 더 등록할텐데 많은 것들중에서 앱을 구분할 수 있는 이름을 입력
(어떻게 입력해도 아무런 영향이 없습니다.)
1-3. 디버그 서명 인증서 SHA-1(선택사항)
- Android Studio에서 하단 Terminal에서 다음을 입력 " ./gradlew signingReport" /PW: "android" 입력("제외)
*만약 zsh: permission denied: ./gradlew 오류가 나타난다면 터미널에 chmod +x gradlew 입력후 다시 zsh: permission denied: ./gradlew입력
실행이 완료되면 다음과 같이 나오는데 SHA1의 값을 Firebase에 입력 (보안상 일부만 보여드립니다)
2-1. 구성 파일 다운로드
- 설명글에 나와있는 것처럼 google-services.json을 다운받아 우측에 있는 해당 프로젝트 경로에 파일을 옮겨줍니다.
(해당위치에 정확하게 추가하지 않으면 제대로 동작하지 않을 수 있으니 참고해주세요!)
3-2. Firebase SDK추가
- 아래의 그림처럼 build.gradle(project)와 build.gradle(Module)의 파일에 FCM관련 코드를 추가.
build.gradle(project)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
//FCM
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.3.10'
}
}
plugins {
id 'com.android.application' version '7.1.1' apply false
id 'com.android.library' version '7.1.1' apply false
id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(Module)
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
//FCM
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdk 32
defaultConfig {
applicationId "com.example.fcm_kotlin"
minSdk 23
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures{
viewBinding true
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
//FCM
implementation platform('com.google.firebase:firebase-bom:29.1.0')
implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.firebase:firebase-messaging-ktx' //FCM-push
}
● 여기까지 잘 따라오셨다면 Firebase의 앱 설정이 끝났습니다.
● Firebase홈페이지에서 좌측상단 / 프로젝트 설정 - 클라우드메세징
● 서버키를 잘 복사 해둡니다. (나중에 PUSH알림을 보낼때 필요!)
여기까지 따라오느라 고생하셨습니다.
2편에서는 Android앱을 만들어보고 테스트까지 진행해보겠습니다.
글 정리 & 소스코드
[정리]
FCM구현 1편: https://minchanyoun.tistory.com/99
FCM구현 2편: https://minchanyoun.tistory.com/101
[소스코드]
FCM: https://github.com/younminchan/kotlin-study/tree/main/FCMkotlin
질문 또는 궁굼한 부분은 댓글을 남겨주세요! 친절하게 답변드리겠습니다!
응원의 댓글은 저에게 큰 힘이 된답니다! :)
즐거운 하루되세요!
깃허브 보러 놀러오세요 👇 (맞팔환영)
https://github.com/younminchan
'🖥 Programming > 📱 Android (Kotlin)' 카테고리의 다른 글
[Android][kotlin] 상단 바[타이틀(Title), 바(Bar) , 탭(Tab)] 없애기 (0) | 2022.03.16 |
---|---|
[Android][kotlin] Firebase DynamicLink (동적링크) 만들기 - 2편 (0) | 2022.02.28 |
[Android][kotlin] Firebase DynamicLink (동적링크) 만들기 - 1편 (2) | 2022.02.28 |
[Android][kotlin] FCM(Firebase Cloud Message) 구현하기! - 2편 (2) | 2022.02.25 |
[Andorid][kotlin] DeepLink 딥링크 알아보기 - 2편 (0) | 2022.02.22 |
[Andorid][kotlin] DeepLink 딥링크 알아보기 - 1편 (0) | 2022.02.22 |
[kotlin][Android] SHA-1 확인하는 방법(Firebase) (0) | 2022.02.21 |
[Android][kotlin] QR코드 스캐너 만들기 (QRCode Scan Example) (0) | 2022.02.18 |