仅在模拟器中调用Android FCM onTokenRefresh()

时间:2019-02-19 16:29:27

标签: android

当我使用Firebase onTokenRefresh()函数时遇到了问题。 我看到了下面的块引号。

  仅当生成新令牌时才调用FirebaseInstanceIdService中的

onTokenRefresh。如果您的应用先前已安装并生成令牌,则不会调用onTokenRefresh。尝试卸载并重新安装该应用程序以强制生成新令牌,这将导致调用onTokenRefresh。

但是它仅应用于我的第一个仿真器而不是设备。

当我尝试卸载并重新安装该应用程序以强制在模拟器中生成新令牌时,便生成了令牌。 但是在设备中,没有生成令牌。 我还尝试通过创建另一个模拟器来查看是否生成了令牌来安装该应用程序。但是,它也没有。

出了什么问题? 这是我的代码。

@Override
public void onTokenRefresh() {

    String refreshedToken = FirebaseInstanceId.getInstance().getToken();

    Log.d(TAG, "Refreshed token: " + refreshedToken);

    sendRegistrationToServer(refreshedToken);
}

和Manifest.xml

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <service
        android:name=".FireBaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
    <service
        android:name=".FirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id"/>
</application>

请有人帮助我。

1 个答案:

答案 0 :(得分:1)

请确保您的设备已连接到互联网。 生成令牌可能需要花费几秒钟的时间,因此请在应用程序启动后立即检查令牌。