일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코틀린
- dart
- livedata
- Django REST Android
- Java
- Kotlin
- Django REST
- Android
- 알고리즘
- UWP
- 안드로이드
- Android P
- 안드로이드 구글맵
- C
- Rxjava2
- mfc
- Django REST framework
- 프로그래머스
- Flutter TextField
- RxAndroid
- FLUTTER
- Python
- RxJava
- flutter firestore
- C++
- android architecture component
- NDK
- C/C++
- kodility
- android push
- Today
- Total
개발하는 두더지
kotlin + firebase 를 이용한 Push Notification 구현(1) 본문
Kotlin + firebase(FCM) 을 이용하여 Push Notification 구현하는 방법을 알아보겠습니다.
1. 코틀린을 사용할 것이므로 코틀린 프로젝트로 생성
2. Tools -> Firebase -> cloud messaging
3. Firebase에서 직접 프로젝트를 생성
connect to firebase 버튼을 클릭하여 자동으로 firebase 프로젝트를 생성합니다.
google-services.json 파일을 다운받아 app/ 에 복사해줍니다.
4. add FCM to your app
build.gradle ( project level )
dependencies {
...
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.google.gms:google-services:4.0.1'
}
app/build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 27
defaultConfig {
...
}
...
}
repositories {
jcenter()
google()
}
dependencies {
...
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-messaging:17.1.0'
...
}
Kotlin 파일을 하나 만들어 줍니다
class MyFirebaseMessagingService : FirebaseMessagingService() {
private val TAG = "FirebaseService"
/**
* FirebaseInstanceIdService is deprecated.
* this is new on firebase-messaging:17.1.0
*/
override fun onNewToken(token: String?) {
Log.d(TAG, "new Token: $token")
}
/**
* this method will be triggered every time there is new FCM Message.
*/
override fun onMessageReceived(remoteMessage: RemoteMessage) {
Log.d(TAG, "From: " + remoteMessage.from)
if(remoteMessage.notification != null) {
Log.d(TAG, "Notification Message Body: ${remoteMessage.notification?.body}")
sendNotification(remoteMessage.notification?.body)
}
}
private fun sendNotification(body: String?) {
val intent = Intent(this, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
putExtra("Notification", body)
}
var pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT)
val notificationSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
var notificationBuilder = NotificationCompat.Builder(this,"Notification")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Push Notification FCM")
.setContentText(body)
.setAutoCancel(true)
.setSound(notificationSound)
.setContentIntent(pendingIntent)
var notificationManager: NotificationManager = this.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(0, notificationBuilder.build())
}
}
AndroidManifest.xml 에 service 태그 추가합니다
<application
...
<service
android:name=".firebase.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
</application>
firebaseinstanceidservice onTokenRefresh() 메소드는 17.1.0 버전에서 deprecated 되었습니다.
FirebaseMessagingService 의 onNewToken() 에서 새롭게 token 값을 받을 수 있습니다.
앱이 재설치되거나 유효기간이 만료되면 자동으로 토큰을 새로 생성해 줍니다.
앱을 최초 실행하면 아래와 같이 새로운 토큰을 받습니다. 이 토큰을 이용하여 직접 단말기로 Push Message 를 보낼 수 있습니다.
Firebase Console에 들어가서 메시지를 보내봅니다.
지금까지 정말 간단한 Notification 받는 방법을 구현해봤습니다.
다음엔 Notification 메시지를 꾸미고, 주제 또는 그룹에 맞는 대상에게만 알림을 보내는 방법을 알아보겠습니다.
'Java,Android' 카테고리의 다른 글
kotlin + firebase 를 이용한 Push Notification 구현(2) (1) | 2018.07.19 |
---|---|
[Android] Android P 변경사항 (0) | 2018.07.18 |
[Android] 안드로이드 뷰가 그려지는 과정 (0) | 2018.06.15 |
[Rxjava2] Rxjava2 를 이용한 로또 번호 당첨 결과 확인하기 (0) | 2018.06.14 |
[Rxjava2] Observable, Flowable (0) | 2018.06.14 |