민프
[Android] FCM Push 기능 구현해보자!! 본문
FCM을 이용해서 알림 Push를 해보자!
FCM이란 Firebase Cloud Messaging이고,
카카오톡에서 나에게 채팅이 오면 Push 알림이 오는 것 처럼
이 FCM을 이용하면 앱을 이용하는 이용자들에게 알림을 보내줄 수 있다.
1. 먼저 프로젝트 만들기
https://console.firebase.google.com/u/0/
-1) 프로젝트 만들기 누르기
-2) 프로젝트 이름 지정
이렇게 해주면 프로젝트가 생성된다.
2. 앱을 추가하여 시작하기
패키지 이름에는 나의 어플의 패키지 이름을 넣고 앱 등록을 눌러주면
구성 파일 다운로드가 나오는데 이것을 다운로드 해주고 오른쪽에 나와있는 이미지 처럼 project -> app에 넣어주고
다음을 누른다.
다음 나오는 내용 처럼 gradle에 추가해주고 다음을 누르면
android 앱에 firebase추가가 완료 된다.
자 이제 본격적으로 FCM에 필요한 작업들을 해보자!
https://firebase.google.com/docs/cloud-messaging/android/client?hl=ko
3. 프로젝트에 FCM 설정
//FCM 관련
implementation platform('com.google.firebase:firebase-bom:28.2.0')
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-messaging:22.0.0'
//FCM 관련
}
//FCM 관련
apply plugin: 'com.google.gms.google-services'
Manifest에 빨간색 부분을 추가하고
<service
android:name=".MyFirebaseMessagingService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
MyFirebaseMessagingService.java 파일을 하나 생성 후에 코드를 삽입한다.
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage != null && remoteMessage.getData().size() > 0) {
sendNotification(remoteMessage);
}
}
private void sendNotification(RemoteMessage remoteMessage) {
String title = remoteMessage.getData().get("title");
String message = remoteMessage.getData().get("message");
final String CHANNEL_ID = "ChannerID";
NotificationManager mManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
final String CHANNEL_NAME = "ChannerName";
final String CHANNEL_DESCRIPTION = "ChannerDescription";
final int importance = NotificationManager.IMPORTANCE_HIGH;
// add in API level 26
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, importance);
mChannel.setDescription(CHANNEL_DESCRIPTION);
mChannel.enableLights(true);
mChannel.enableVibration(true);
mChannel.setVibrationPattern(new long[]{100, 200, 100, 200});
mChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
mManager.createNotificationChannel(mChannel);
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID);
builder.setSmallIcon(R.drawable.ic_launcher_background);
builder.setAutoCancel(true);
builder.setDefaults(Notification.DEFAULT_ALL);
builder.setWhen(System.currentTimeMillis());
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle(title);
builder.setContentText(message);
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
builder.setContentTitle(title);
builder.setVibrate(new long[]{500, 500});
}
mManager.notify(0, builder.build());
}
@Override
public void onNewToken(String s) {
super.onNewToken(s);
}
}
여기까지 하고 이제 알림을 보내보자!!
4. Cloud Messaging
타겟에 나의 어플을 넣으면 된다.
예약에서 지금을 선택하고 검토를 누른 후 게시를 누르면
Push가 간다.
이렇게 FCM을 써보았는데
내가 하고싶은 기능은
내가 올린 게시물에 댓글이 달렸을때 PUSH가 되는 것 이다.
다음 포스트에는 서버 + FCM 을 해봐야겠다.
https://minf.tistory.com/18?category=871909
'[Android]' 카테고리의 다른 글
[Android] 안드로이드 에뮬레이터 속도를 높여보자!!(feat.Guest unoccupied no 1 guest s) (0) | 2021.07.08 |
---|---|
[Android] Intent로 Email을 보내보자!!(Email 관련 앱들만 나오게 하기) (0) | 2021.07.07 |
[Android] 프로필 사진을 만들어보자!!(카메라, 앨범, 사진CROP) (0) | 2021.07.03 |
[Android] StaticLayout을 이용해서 Canvas에 텍스트를 MulitLine으로 만들어보자!! (0) | 2021.07.02 |
[Android] 여러 페이지의 PDF를 만들어보자!! (0) | 2021.07.02 |