android - 如何获取 firebase token ?

标签 android firebase firebase-cloud-messaging

我有一段时间没有编写 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/

相关文章:

android - Mac Eclipse 分层 View 也在 com.example.test(包)中

javascript - 如何针对此用例扩展 Firebase Cloud 功能中的推送通知?

swift - Firebase Cocoapods - 错误信息;无法构建 Objective-C 模块 'Firebase

swift - Firestore getDocument 总是返回文档,即使文档不存在,文档不完整?

firebase - 当应用程序处于前台时,Flutter FCM 推送通知不起作用

ios - 如何通过 Java(Spring Boot) 使用 FCM 向 iOS 设备发送通知/消息?

android - 如何使 OpenGL 具有交互性?

android - 从 DatePickerDialog 中删除年份

java - HttpURLConnection.getResponse 代码错误

android - Firebase Storage 下载多张照片 Urls