>im 不会生成获取令牌。
onTokenrefresh(( 没有调用。 谁能帮忙。
它连接到Firebase,令牌仍然没有生成。
public class MyFireBaseInstanceId extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
@Override
public void onTokenRefresh() {
//Getting registration token
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
//Displaying token on logcat
Log.d(TAG, "Refreshed token: " + refreshedToken);
sendRegistrationToServer(refreshedToken);
}
private void sendRegistrationToServer(String token) {
//You can implement this method to store the token on your server
//Not required for current project
SharedPrefManager.getInstance(getApplicationContext()).saveDeviceToken(token);
}
}
我明白了。 我刚刚验证了令牌是否为空.如果 token 为 null,那么我们将调用 ontokenrefresh(( 方法。
代码为:
tokengenerate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (token!=null) {
Toast.makeText(MainActivity.this,token,Toast.LENGTH_LONG).show();
RegisterToken registerToken = new RegisterToken();
registerToken.execute();
}
else
myFireBaseInstanceId.onTokenRefresh();
}
});
}
你确定FirebaseInstanceIdService
在你的AndroidManifest中正确定义.xml像这样
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".FirebaseIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
从任何活动中尝试:
FirebaseMessaging.getInstance().subscribeToTopic("news");
String notificationToken = FirebaseInstanceId.getInstance().getToken();
如果仍然没有获得令牌,则项目中的google-services.json文件将出现错误
1(请检查您在项目中添加了正确的google-services.json文件。 2(检查您在清单文件中添加了 FCM 服务。
onTokenRefresh只会在特定条件下调用:
- 应用删除实例 ID
- 应用已在新设备上恢复
- 用户卸载/重新安装应用
- 用户清除应用数据
因此,当您首次启动应用程序时,它可能会调用此方法,但在第二次启动时不会调用此方法。
由于您使用共享首选项,因此可以使用它来检索活动内的令牌。
FCM 在获取 FCM 实例时生成令牌,并首先在应用程序中刷新令牌。 当您再次需要时,您必须在设备中重新安装应用程序。
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
请确保将实例 ID 的属性添加到活动选项卡下的 Android 清单文件中。 在 android 清单中错误添加属性可能会导致此错误。