Android/활용

안드로이드 FCM 활용하기! (푸시알림 보내기)

섭섭입니다 2020. 3. 14. 16:49

이번 글에서는 안드로이드에서 푸시알림 받는 방법에 대해서 간단하게 정리 해보겠습니다.

 

 

우선 안드로이드 스튜디오에서 하나의 프로젝트를 만듭니다. Empty Activity로 만들어 줍니다.

 

 

이름 설정해주시고 Finish 누릅니다.

 

 

이제  Firebase 콘솔 : https://console.firebase.google.com/

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

우선 Firebase 홈페이지를 이용하기 위해서는 구글 계정이 필요하기에 로그인을 해주어야 합니다.

 

홈페이지에 들어가 [프로젝트 만들기] 버튼을 누릅니다.

 

 

버튼을 누르면 아래와 같은 화면이 뜰텐데 안드로이드스튜디오에서 만들었던 자신의 프로젝트 이름을 동일하게 입력해 준다음 계속 버튼을 눌러줍니다.

 

- 계속 누릅니다.

 

Default Account for Firebase  계정 선택해주시고 프로젝트 만들기를 누릅니다.

 

다 만들어진뒤에 만든 프로젝트를 선택해주시면 중앙 부분에 안드로이드 모양이 있는데 그것을 클릭 해주시면 됩니다.

 

 

그러면 아래와 같은 화면이 뜰 겁니다. 패키지이름을 다시 안드로이드 스튜디오로 돌아가 AndroidManifest.xml 로 가서 자신의 패키지이름을 확인한 후에 동일하게 적어주면 됩니다.

 

 

 

다음 누르시면 google-services.json 파일을 다운로드 하라고 나와 있는데 이것을 다운로드하여 다운로드한 google-services.json 파일에 가져다 대고 < ctrl + c > , 그리고 안드로이드 스튜디오로 돌아가 첫 번째로 네모 박스 친 부분을 Android -> project 로 바꾸어 줍니다. 그 다음에 app를 클릭하고 < ctrl + v > 해주시면 아래와 같이 파일이 첨부 된 것을 볼 수 있습니다.

 

설명에 나와 있는것과 마찬가지로 build.gradle (project) 로 들어가서 다음과 같이 google-services를 이용하겠다고 명시 해주어야 합니다.  추가로 아래 코드 한줄을 입력하면 됩니다.

 

classpath 'com.google.gms:google-services:4.3.2'

 

 

 

 

그리고 마찬가지로 build.gradle (Module)로 들어가서 코드 추가 해줍니다.

 

implementation 'com.google.firebase:firebase-messaging:17.0.0'  
apply plugin: 'com.google.gms.google-services'

 

 

여기까지 됐다면 app을 자신의 안드로이드 핸드폰에 깔아봅시다.

 

자신의 애뮬레이터나 usb를 연결한 안드로이드 핸드폰을 선택하고 Run "app" 버튼을 클릭합니다. 그러면 빌드가 정상적으로 이루어지고 핸드폰에 다운로드 됩니다.

 

이제 4단계로 넘어가는데

 

 

저는 이 4단계가 넘어가지 않아 해결방법을 강구 했으나 되지 않아서 이 단계 넘어가기를 했습니다.

 

 

이제 안드로이드 스튜디오에서 코딩을 직접해볼것인데 우선 제일먼저 AndroidManifest.xml 에 다음과 같은 코드를 넣어주면 됩니다. FireBaseMessgingService라는 클래스를 서비스로 등록하겠다라는 의미랍니다.

 

        <service android:name=".FirebaseMessagingService">
            <intent-filter>

                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>

        </service>

        <service android:name=".FirebaseinstanceIDServices">

            <intent-filter>

                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>

 

 

또한 인터넷 설정을 해줍니다.

 

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

 

이제 java 클래스를 추가적으로 만들어 코딩 해줄 것입니다. 일단  [ java에서 우클릭 -> new -> java class ] 를 해주어 새 클래스를 만들어줍니다. 이름은 FirebaseMessagingService.java 로 만듭니다.

 

package com.example.pushtest;

import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.util.Log;

import androidx.core.app.NotificationCompat;

import com.google.firebase.messaging.RemoteMessage;

public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService {

    private static final String TAG = "FirebaseMsgService";

    private String msg, title;


    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
       Log.e(TAG,"onMessageReceived");

       title = remoteMessage.getNotification().getTitle();
       msg = remoteMessage.getNotification().getBody();

       Intent intent = new Intent(this,MainActivity.class);
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

       PendingIntent contentIntent = PendingIntent.getActivity(this,0,new Intent(this,MainActivity.class),0);

        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(title)
                .setContentText(msg)
                .setAutoCancel(true)
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                .setVibrate(new long[]{1,1000});

        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(0,mBuilder.build());

        mBuilder.setContentIntent(contentIntent);

    }
}

 

그리고 또하나 더 만들어 줍니다. 이름은 FirebaseinstanceIDServices.java

 

package com.example.pushtest;

import android.util.Log;

import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;



public class FirebaseinstanceIDServices extends FirebaseInstanceIdService {

    private static final String TAG = "MyFirebaseIIDService";



    @Override
    public void onTokenRefresh() {

        String token = FirebaseInstanceId.getInstance().getToken();
        Log.e(TAG,token);

        sendRegistrationToServer(token);

    }

    private void sendRegistrationToServer (String token){

    }
}

 

여기까지 코딩이 됐으면 한번 더 핸드폰에 다시 설치해줍니다. 이제 다 된 것입니다.

 

그리구 다시 Firebase 콘솔사이트 https://console.firebase.google.com/ 로 돌아와 푸시 알림을 보내 볼 것입니다.

 

왼쪽에 성장탭에 cloud Messaging 을 클릭하면 [ send your first message ] 라는 버튼이 있을텐데 클릭하여 줍니다.

 

 

 

아래와 같이 5단계가 있을 것인데 따라해보면 됩니다.

 

자신이 보내고픈 알림제목과 텍스트를 적어주시고 다음

 

 

앱을 선택해 주신다음 다음

 

 

지금 - 다음

 

 

 

나머지 4단계 5단계도 마찬가지로 다음 다음 검토 눌러 게시하면 아래와 같이 푸시알림이 보내집니다.

 

 

여기까지 FCM를 이용한 안드로이드 푸시알림 보내보기를 해 보았습니다. 감사합니다!