使用Firebase 17.0.1进行INSTANCE_ID_EVENT操作怎么办?

ard*_*evd 2 android firebase firebase-cloud-messaging

因此,既然FirebaseInstanceIdService服务已被弃用,我不确定用什么替换它。

我以前在清单中声明了一个服务,如下所示:

        <service
            android:name=".fcm.FcmIdService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
Run Code Online (Sandbox Code Playgroud)

服务本身:

public class FcmIdService extends FirebaseInstanceIdService {

    @Override
    public void onTokenRefresh() {
        // Create notification channel.
        createFcmNotificationChannel();
    }

}
Run Code Online (Sandbox Code Playgroud)

如果删除该服务,我将不再收到通知,因此我假设我必须用其他东西代替它。

谢谢。

编辑:该问题与建议的重复问题有所不同,它还涵盖了对我仍然不清楚的受影响服务的清单声明。

Ale*_*nov 5

检查此主题:

不推荐使用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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

并在清单中:

<service
    android:name=".MyFirebaseMessagingService"
    android:stopWithTask="false">
    <intent-filter>

        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)

如果您想在项目中的某处获取令牌:

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this,  new OnSuccessListener<InstanceIdResult>() {
     @Override
     public void onSuccess(InstanceIdResult instanceIdResult) {
           String newToken = instanceIdResult.getToken();
           Log.e("newToken",newToken);

     }
 }); 
Run Code Online (Sandbox Code Playgroud)

无需使用

<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
Run Code Online (Sandbox Code Playgroud)

希望对您有帮助