관리 메뉴

웹개발자의 기지개

FirebaseInstanceIdService, onTokenRefresh() 가 deprecated 되었다. 본문

안드로이드

FirebaseInstanceIdService, onTokenRefresh() 가 deprecated 되었다.

http://portfolio.wonpaper.net 2020. 1. 1. 16:52

FirebaseInstanceIdService 가 deprecated 되어서 onTokenRefresh() 등이 메소드를 더이상 지원받을 수 없다.

 

그리고, 기존에 앱 초기등록시 만들어지는 토큰을

 FirebaseInstanceId.getInstance().getToken()

형식으로 간단히 받을 수 있었는데. 이또한 deprecated 되었다.

 

그렇다면 이제는 어떤거를 이용해야 하느냐하면

 

FirebaseMessagingService 클래스이다.

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
 
public class MyFirebaseMsgService extends FirebaseMessagingService {
 
    /* 토큰이 새로 만들어질때나 refresh 될때  */
    @Override
    public void onNewToken(String s) {
        super.onNewToken(s);
        Log.e("NEW_TOKEN", refreshedToken);
 
        /* DB서버로 새토큰을 업데이트시킬수 있는 부분 */
    }
 
    /* 메세지를 새롭게 받을때 */
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) { 
        Log.d(TAG, "From: " + remoteMessage.getFrom());
        
       /* 새메세지를 알림기능을 적용하는 부분 */
 
     if (remoteMessage.getNotification() != null) {
        Log.d(TAG, "From: " + remoteMessage.getFrom());
        Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
 
        String messageBody = remoteMessage.getNotification().getBody();
        String messageTitle = remoteMessage.getNotification().getTitle();
     }
    }
}
cs

 

또한 AndroidManifest.xml 내에 적용해야 하는 코드이다.

1
2
3
4
5
6
7
<service
        android:name=".MyFirebaseMsgService"
        android:stopWithTask="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
</service>
cs

MainActivity.java 상에서 예전에는

 

 

String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(
"FCM", "Refreshed Device token: " + refreshedToken);

 

 

이런식으로 이용해서 토큰값을 받았는데, 이제는 다음과 같이 해야한다.

 

1
2
3
4
5
6
7
8
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this,  new OnSuccessListener<InstanceIdResult>() {
     @Override
     public void onSuccess(InstanceIdResult instanceIdResult) {
           String newToken = instanceIdResult.getToken();
           Log.e("newToken", newToken);
 
     }
 });
cs

 

 

 

 

Comments