我按照互联网上的示例,在这里和其他网站上回顾了很多问题
我构建了我的应用程序,因此它处理FCM通知,但我仍然无法找到为什么不调用FirebaseInstanceIdService。
我在AndroidManifest.xml
<service android:name=".InstanceService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"></action>
</intent-filter>
</service>
<service android:name=".MessageService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"></action>
</intent-filter>
</service>
我的服务是
public class InstanceService extends FirebaseInstanceIdService {
private static final String REG_Token="REG_Token";
@Override
public void onTokenRefresh() {
String recent_token= FirebaseInstanceId.getInstance().getToken(); // get token from the server
Log.d(REG_Token,recent_token); // show device token in Logcat View
}
我看看Logcat,但那里没有REG_Token。
我尝试调试代码并在Log.d(REG_Token,recent_token);
处将其停止,但它并没有就此止步。
我认为该服务根本没有被调用,我无法找到原因。
答案 0 :(得分:8)
注册令牌可能会在以下情况下发生变化:
- 该应用删除实例ID
- 该应用已在新设备上恢复
- 用户卸载/重新安装应用
- 用户清除应用数据。
这意味着每次打开应用程序时都不会调用onTokenRefresh()
方法,但只有当这4个事件中的一个发生时才会调用。
最简单的方法是卸载应用程序,然后再次安装应用程序。安装完毕后,打开应用程序,然后查看logcat(根据您的代码)。
希望这会有所帮助:)