Firebase Cloud Messaging未调用FirebaseInstanceId

qwe*_*rtz 11 android firebase google-cloud-messaging

我只是根据本指南更新GCM向FCM 这里.该网站说,一旦生成令牌,我将调用扩展FirebaseInstanceIdService的服务.出于某种原因,我的服务永远不会被调用,onTokenRefresh永远不会执行.

根据指南,我的服务是这样注册的:

<service android:name=".fcm.FcmService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

<service android:name=".fcm.InstanceIdService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCEID_EVENT"/>
    </intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)

我的服务:

public class InstanceIdService extends FirebaseInstanceIdService {

    private static final String TAG = "InstanceIdService";

    @Override
    public void onTokenRefresh() {
        String token = FirebaseInstanceId.getInstance().getToken();

        Log.e(TAG, "Got token: " + token);
    }
}
Run Code Online (Sandbox Code Playgroud)

LogCat没有说明丢失配置文件或其他任何内容,我可以看到有关FirebaseApp的日志和提及令牌的日志条目,但我的服务仍然没有被调用.

我是否需要在我的活动中的某个地方启动此服务?难道我做错了什么?有人可以指导我正确的方向吗?

编辑:使用Log.e("TOKEN", "Token: " + FirebaseInstanceId.getInstance().getToken());正确打印我的令牌,这意味着它已成功生成.该服务仍未被调用...

编辑2:将INSTANCEID_EVENT更改为INSTANCE_ID_EVENT修复了问题,但我不得不重新安装该应用程序.由于我已经发布了包含新FCM的测试版,我的beta版测试人员将无法订阅主题以显示传入的消息.那我该怎么解决呢?

Zac*_*ner 11

谢谢Endanke和我一起搞清楚这一点.似乎Firebase文档不一致.一页说你的清单文件中的意图过滤器应该是INSTANCE_ID_EVENT,而另一页INSTANCEID_EVENT.

您应该使用INSTANCE_ID_EVENT,一旦进行了更改,您将需要完全卸载并重新安装您的应用程序才能启动更改.

  • 外部思考卸载和重新运行对我有用.谢谢. (2认同)