android - Android FCM onTokenRefresh() 仅在模拟器中调用
问题描述
我在使用 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>
请有人帮助我..
解决方案
请确保您的设备已连接到互联网。生成令牌可能需要几秒钟,因此不要在应用程序启动后立即检查令牌。