如何处理 Firebase 17.0.1 的INSTANCE_ID_EVENT操作?



所以现在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)
}

相关内容

  • 没有找到相关文章

最新更新