我有一段时间没有编写 android 程序,我发现 firebase 消息服务已被弃用。
我实现了新的 FirebaseMessagingService
类,并且我已经重写了 onNewToken 以获得 token ,但是甚至没有调用该方法,因为文档说这个方法应该自动运行。但现在我很困惑,为什么没有生成 token ?这是我实现的
public class FireBsaeTest extends FirebaseMessagingService {
public FireBsaeTest(){
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().size() > 0) {
} else {
}
}
if (remoteMessage.getNotification() != null) {
}
}
@Override
public void onNewToken(String token) {
System.out.println(token);
}}
这是 list
<service android:name=".FireBsaeTest">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
我错过了什么吗?
更新
我试图从我的 Activity 中手动调用它,它引发了新的非法异常 firebaseNotInilized
FirebaseApp.initializeApp(this);
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
System.out.println(instanceIdResult.getToken());
}
});
最佳答案
MyFirebaseMessagingService
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = MyFirebaseMessagingService.class.getSimpleName();
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.i(TAG, "onNewToken: >>> " + s);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
}
}
MyFirebaseInstanceIDService.java
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d("FirebaseInstanceID", "Refreshed token: " + refreshedToken);
// Notify UI that registration has completed, so the progress indicator can be hidden.
}
}
list .xml
<service android:name=".services.MyFirebaseMessagingService"
android:exported="false"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name=".services.MyFirebaseInstanceIDService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
渐变
implementation 'com.google.firebase:firebase-core:16.0.6'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
关于android - 如何获取 firebase token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54770298/