FirebaseInstanceIdService不会被调用

时间:2017-01-03 11:28:19

标签: android firebase firebase-cloud-messaging

我按照互联网上的示例,在这里和其他网站上回顾了很多问题

我构建了我的应用程序,因此它处理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);处将其停止,但它并没有就此止步。

我认为该服务根本没有被调用,我无法找到原因。

1 个答案:

答案 0 :(得分:8)

来自this documentation

  

注册令牌可能会在以下情况下发生变化:

     
      
  • 该应用删除实例ID
  •   
  • 该应用已在新设备上恢复
  •   
  • 用户卸载/重新安装应用
  •   
  • 用户清除应用数据。
  •   

这意味着每次打开应用程序时都不会调用onTokenRefresh()方法,但只有当这4个事件中的一个发生时才会调用。

最简单的方法是卸载应用程序,然后再次安装应用程序。安装完毕后,打开应用程序,然后查看logcat(根据您的代码)。

希望这会有所帮助:)