我按照Firebase Cloud Messaging提供的设置流程进行了操作,但无论如何都没有调用onTokenRefresh方法。
以下是相关更改:
应用程序的build.gradle:
dependencies {
...
compile 'com.google.firebase:firebase-messaging:9.4.0'
}
apply plugin: 'com.google.gms.google-services'
项目的build.gradle:
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.google.gms:google-services:3.0.0'
}
AndroidManifest.xml
<application
...
<service
android:name="com.blynq.app.services.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name="com.blynq.app.services.MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
</application>
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
String token = FirebaseInstanceId.getInstance().getToken();
Log.i("FCM", "Token refreshed - " + token);
registerTokenWithServer(token);
}
}
日志显示 I/FirebaseInitProvider: FirebaseApp 初始化成功,但是却没有执行 onTokenRefresh()。
我确定我漏掉了什么,但是无法理解出错的地方在哪里。
编辑:这种情况只发生在模拟器上,使用 Android 设备则以上述设置正常工作。
onTokenRefresh()。你的应用程序很可能已经生成了一个令牌。你可以删除应用数据/重新安装应用程序,或者在MainActivity.onCreate中使用FirebaseInstanceId.getInstance().getToken()读取令牌。 - Frank van Puffelen