본문 바로가기
프로그래밍/Android

FirebaseInstanceId 등록 및 토큰(token) 정보 얻기(FCM이용방법)

by Mr-후 2019. 5. 7.
반응형

FirebaseInstanceId 등록 및 토큰(token) 정보 얻기



아이폰과 조금 다른 부분이 있어서 잘 정리를 해두어야 할 것 같다. 생소한 FCM 처리를 통해 push토큰을 획득하는 부분에 대한 처리 코드는 다음과 같다. 

@Override
protected void onCreate(Bundle savedInstanceState) {

   //.... 중략

FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override
public void onComplete(@NonNull Task<InstanceIdResult> task) {
if (!task.isSuccessful()) {
Log.w("FIREBASE", "getInstanceId failed", task.getException());
return;
}

// Get new Instance ID token
String token = task.getResult().getToken();

// Log and toast
//String msg = getString(R.string.msg_token_fmt, token);
Log.d("FIREBASE", token);
Toast.makeText(ActivityNewMain.this, token, Toast.LENGTH_SHORT).show();
}
});

}


AndroidManifest.xml 에는 다음과 같은 코드가 추가 되어야 한다. 

<service android:name=".FirebaseMessagingIDService"
android:enabled="true"
android:exported="true"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>

따라서 FirebaseMessagingIDService 가 추가되어야 하고 intent-filter를 추가해준다. 

하나는 메시지를 받기 위함이고 하나는 메시지를 받기 위한 ID 식별자를 FCM서버에 등록하고 얻을 수 있게 함이다. 

public class FirebaseMessagingIDService extends FirebaseMessagingService {
/**
* 구글 토큰을 얻는 값입니다.
* 아래 토큰은 앱이 설치된 디바이스에 대한 고유값으로 푸시를 보낼때 사용됩니다.
* **/

@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.e("Firebase", "FirebaseInstanceIDService : " + s);
}


/**
* 메세지를 받았을 경우 그 메세지에 대하여 구현하는 부분입니다.
* **/
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

if (remoteMessage != null && remoteMessage.getData().size() > 0) {
sendNotification(remoteMessage);
}
}

/**
* remoteMessage 메세지 안애 getData와 getNotification이 있습니다.
*
* **/
private void sendNotification(RemoteMessage remoteMessage) {

String title = remoteMessage.getData().get("title");
String message = remoteMessage.getData().get("message");

}

}


반응형