我想手动调用FCM来获取令牌,而在android应用程序中它是null

问题描述 投票:1回答:3

我想知道如果有解决方案来获取FCM令牌而它是空的吗?换句话说,我想手动调用FCM获取令牌,而在Android应用程序中它是null?

提前致谢

android firebase push-notification token firebase-cloud-messaging
3个回答
2
投票

如果你想更快地获得令牌,你必须使用:

token = FirebaseInstanceId.getInstance().getToken("projectNumber","FCM");

代替:

token = FirebaseInstanceId.getInstance().getToken();

0
投票

如果在调用null时获得FirebaseInstanceID.getToken(),则表示尚未生成令牌。现在没有强制生成令牌的API,因此您必须改为监控令牌生成。

要监视令牌生成,请创建一个派生自com.google.firebase.iid.FirebaseInstanceId的类并覆盖其onTokenRefresh()方法:

@Override
public void onTokenRefresh() {
    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.d(TAG, "Refreshed token: " + refreshedToken);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(refreshedToken);
}

请注意,获取和监控令牌都包含在accessing the registration token的Firebase文档中,这是我从上面获取上述代码示例的地方。


0
投票

使用getInstanceId()而不是getToken(),已弃用。

new Thread(new Runnable() {

                    @Override
                    public void run() {

                        FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
                            @Override
                            public void onSuccess(InstanceIdResult instanceIdResult) {
                                String deviceToken = instanceIdResult.getToken();

                            }
                        });
                    }
                }).start();
© www.soinside.com 2019 - 2024. All rights reserved.