안드로이드
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 |