所以现在FirebaseInstanceIdService服务已被弃用,我不确定用什么替换它。
我之前在清单中声明了一个服务,如下所示:
<service
android:name=".fcm.FcmIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
以及服务本身:
public class FcmIdService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
// Create notification channel.
createFcmNotificationChannel();
}
}
如果我删除该服务,我将不再收到通知,因此我假设我必须将其替换为其他内容。
谢谢。
编辑:这个问题与提议的重复问题不同,它还涵盖了受影响服务的清单声明,这对我来说仍然不清楚。
检查此主题:
FirebaseInstanceIdService 已弃用
您必须将其替换为:
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);
}
}
并在清单中:
<service
android:name=".MyFirebaseMessagingService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
如果您想在项目中的某个位置获取令牌:
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this, new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String newToken = instanceIdResult.getToken();
Log.e("newToken",newToken);
}
});
无需使用
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
希望对您有所帮助
清单中所需要的只是这个(请注意,该服务不需要android:stopWithTask="false"
,因为它默认为 false:
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
这是其余的美丽简单的 Kotlin ...
若要在刷新新令牌时获取新令牌,请执行以下操作:
class MyFirebaseMessagingService: FirebaseMessagingService() {
override fun onNewToken(token: String?) {
Log.d("FMS_TOKEN", token)
}
...
}
要在运行时从任何位置获取令牌,请执行以下操作:
FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener {
Log.d("FMS_TOKEN", it.token)
}