FirebaseInstanceIdService는 더 이상 사용되지 않습니다
firebase 알림 토큰이 새로 고쳐질 때마다 알림 토큰을 얻는 데 사용되는이 클래스를 알고 있기를 바랍니다.이 클래스에서 새로 고친 토큰을 다음 방법에서 가져옵니다.
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
FCM을 구현하고 싶을 때 이것을 사용하기 위해 MyClass를 확장했습니다. FirebaseInstanceIdService
그러나 FirebaseInstanceIdService가 더 이상 사용되지 않음을 표시
아무도 이것을 알고 있습니까?, 더 이상 사용되지 않으므로 새로 고침 된 토큰을 얻으려면이 대신 사용해야하는 메소드 또는 클래스입니다.
나는 사용하고있다 : implementation 'com.google.firebase:firebase-messaging:17.1.0'
나는 이것에 대해 언급 된 내용이없는 것을 확인했다. : FCM 설정 문서
최신 정보
이 문제는 해결되었습니다.
구글은 사용되지 않는 FirebaseInstanceService
,
나는 방법을 찾기 위해 질문을했고 FirebaseMessagingService 에서 토큰을 얻을 수 있다는 것을 알게되었습니다 .
이전과 마찬가지로 질문 문서가 업데이트되지 않았지만 이제 Google 문서가 업데이트되어 자세한 정보가 필요하면 다음 Google 문서를 참조하십시오 : FirebaseMessagingService
OLD From : FirebaseInstanceService (더 이상 사용되지 않음)
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
NEW From : FirebaseMessagingService
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.d("NEW_TOKEN",s);
}
감사.
여기에 화염병
다음에 대한 참조 문서를FirebaseInstanceIdService
확인하십시오 .
이 클래스는 더 이상 사용되지 않습니다.
의 재정의
onNewToken
에 찬성FirebaseMessagingService
합니다. 일단 구현되면이 서비스를 안전하게 제거 할 수 있습니다.
이상하게도 JavaDoc FirebaseMessagingService
은 onNewToken
메소드를 아직 언급하지 않았습니다. 모든 업데이트 된 문서가 아직 게시되지 않은 것 같습니다. 참조 문서에 대한 업데이트를 게시하고 가이드의 샘플도 업데이트하도록 내부 문제를 제기했습니다.
그 동안 이전 / 더 이상 사용되지 않는 통화와 새 통화가 모두 작동합니다. 어느 쪽이든 문제가 있다면 코드를 게시하면 살펴볼 것입니다.
예, FirebaseInstanceIdService
더 이상 사용되지 않습니다
FROM DOCS :- 이 클래스는 더 이상 사용되지 않습니다. 찬성
overriding onNewToken
에서FirebaseMessagingService
. 일단 구현되면이 서비스를 안전하게 제거 할 수 있습니다.
FirebaseInstanceIdService
FCM 토큰을 얻기 위해 서비스 를 사용할 필요가 없습니다. 안전하게 FirebaseInstanceIdService
서비스를 제거 할 수 있습니다
이제 우리가해야 할 @Override onNewToken
얻을 Token
에FirebaseMessagingService
샘플 코드
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String s) {
Log.e("NEW_TOKEN", s);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Map<String, String> params = remoteMessage.getData();
JSONObject object = new JSONObject(params);
Log.e("JSON_OBJECT", object.toString());
String NOTIFICATION_CHANNEL_ID = "Nilesh_channel";
long pattern[] = {0, 1000, 500, 1000};
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "Your Notifications",
NotificationManager.IMPORTANCE_HIGH);
notificationChannel.setDescription("");
notificationChannel.enableLights(true);
notificationChannel.setLightColor(Color.RED);
notificationChannel.setVibrationPattern(pattern);
notificationChannel.enableVibration(true);
mNotificationManager.createNotificationChannel(notificationChannel);
}
// to diaplay notification in DND Mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = mNotificationManager.getNotificationChannel(NOTIFICATION_CHANNEL_ID);
channel.canBypassDnd();
}
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
notificationBuilder.setAutoCancel(true)
.setColor(ContextCompat.getColor(this, R.color.colorAccent))
.setContentTitle(getString(R.string.app_name))
.setContentText(remoteMessage.getNotification().getBody())
.setDefaults(Notification.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.ic_launcher_background)
.setAutoCancel(true);
mNotificationManager.notify(1000, notificationBuilder.build());
}
}
편집하다
다음
FirebaseMessagingService
과 같이 매니페스트 파일 을 등록해야 합니다.
<service
android:name=".MyFirebaseMessagingService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
활동에서 토큰을 얻는 방법
.getToken();
사용보다 활동에서 토큰을 가져와야하는 경우에도 더 이상 사용되지 않습니다.getInstanceId ()
이제 getInstanceId ()
토큰 생성 에 사용해야 합니다
getInstanceId ()
ID
이 Firebase
프로젝트에 대해 자동 생성 된 토큰을 반환합니다 .
인스턴스 ID가 아직 없으면 Firebase 백엔드에 주기적으로 정보를 전송하기 시작합니다.
보고
- 작업은 당신이를 통해 결과를 확인하는 데 사용할 수있는
InstanceIdResult
이는 보유ID
및token
.
샘플 코드
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this, new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String newToken = instanceIdResult.getToken();
Log.e("newToken",newToken);
}
});
편집 2
kotlin의 작업 코드는 다음과 같습니다.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(p0: String?) {
}
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val NOTIFICATION_CHANNEL_ID = "Nilesh_channel"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val notificationChannel = NotificationChannel(NOTIFICATION_CHANNEL_ID, "Your Notifications", NotificationManager.IMPORTANCE_HIGH)
notificationChannel.description = "Description"
notificationChannel.enableLights(true)
notificationChannel.lightColor = Color.RED
notificationChannel.vibrationPattern = longArrayOf(0, 1000, 500, 1000)
notificationChannel.enableVibration(true)
notificationManager.createNotificationChannel(notificationChannel)
}
// to diaplay notification in DND Mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = notificationManager.getNotificationChannel(NOTIFICATION_CHANNEL_ID)
channel.canBypassDnd()
}
val notificationBuilder = NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
notificationBuilder.setAutoCancel(true)
.setColor(ContextCompat.getColor(this, R.color.colorAccent))
.setContentTitle(getString(R.string.app_name))
.setContentText(remoteMessage!!.getNotification()!!.getBody())
.setDefaults(Notification.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.ic_launcher_background)
.setAutoCancel(true)
notificationManager.notify(1000, notificationBuilder.build())
}
}
이:
FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()
더 이상 사용되지 않는 솔루션이라고 가정하십시오.
FirebaseInstanceId.getInstance().getToken()
편집하다
FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()
작업이 아직 완료되지 않은 경우 예외를 생성 할 수 있으므로 (으로 설명 된 .addOnSuccessListener
) 마녀 Nilesh Rathod 가 올바른 방법입니다.
코 틀린 :
FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener(this) { instanceIdResult ->
val newToken = instanceIdResult.token
Log.e("newToken", newToken)
}
KOTLIN에서 :- 토큰 을 DB 또는 공유 환경 설정 에 저장하려면 FirebaseMessagingService 에서 onNewToken을 재정의하십시오.
override fun onNewToken(token: String?) {
super.onNewToken(token)
}
런타임에 토큰을 얻고 사용하십시오.
FirebaseInstanceId.getInstance().instanceId
.addOnSuccessListener(this@SplashActivity) { instanceIdResult ->
val mToken = instanceIdResult.token
println("printing fcm token: $mToken")
}
Kotlin allows for even simpler code than what's shown in other answers.
To get the new token whenever it's refreshed:
class MyFirebaseMessagingService: FirebaseMessagingService() {
override fun onNewToken(token: String?) {
Log.d("FMS_TOKEN", token)
}
...
}
To get the token from anywhere at runtime:
FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener {
Log.d("FMS_TOKEN", it.token)
}
FirebaseinstanceIdService
is deprecated. So have to use "FirebaseMessagingService"
Sea the image please:
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.e("NEW_TOKEN",s);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
}
}
참고URL : https://stackoverflow.com/questions/51123197/firebaseinstanceidservice-is-deprecated
'IT story' 카테고리의 다른 글
Java에서 돈을 위해 사용할 데이터 유형은 무엇입니까? (0) | 2020.05.29 |
---|---|
MongoDB에서 findAndModify와 업데이트의 차이점은 무엇입니까? (0) | 2020.05.29 |
변하지 않는 문화 란 무엇입니까? (0) | 2020.05.29 |
Golang에서 사용자 정의 패키지를 사용하는 방법은 무엇입니까? (0) | 2020.05.29 |
공급 업체 스크립트를 개별적으로 번들로 묶고 Webpack과 함께 필요에 따라 필요한 방법은 무엇입니까? (0) | 2020.05.29 |