android - Firebase 云消息传递不调用 FirebaseInstanceId

标签 android firebase google-cloud-messaging

我刚刚根据本指南将 GCM 更新为 FCM here .该网站说我扩展 FirebaseInstanceIdService 的服务将在生成 token 后立即调用。出于某种原因,我的服务从未被调用,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>

我的服务:

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);
    }
}

LogCat 没有说明缺少配置文件或其他任何信息,我可以看到有关 FirebaseApp 的日志和提及 token 的日志条目,但我的服务仍未被调用。

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

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

编辑 2:将 INSTANCEID_EVENT 更改为 INSTANCE_ID_EVENT 解决了这个问题,尽管我不得不重新安装该应用程序。由于我已经发布了包含新 FCM 的测试版,我的测试版测试人员将无法订阅主题来接收传入消息。那我应该怎么解决呢?

最佳答案

感谢 Endanke 与我一起解决这个问题。似乎 Firebase 文档不一致。 One page表示 list 文件中的 Intent 过滤器应为 INSTANCE_ID_EVENT,并且 anotherINSTANCEID_EVENT

您应该使用 INSTANCE_ID_EVENT,并且一旦您进行了更改,您将需要完全卸载并重新安装您的应用才能使更改生效。

关于android - Firebase 云消息传递不调用 FirebaseInstanceId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37327096/

相关文章:

android - 在 Windows 10 上使用 Android Studio 设置向导运行英特尔® HAXM 安装程序需要很长时间

Flutter 的 Firebase 读/写规则不起作用?

java - 我是否需要服务器将我的应用程序中创建的 PDF 发送到另一台设备上的同一应用程序(不同的帐户)?

ios - GCM(Google Cloud Messaging)将通知从python应用服务器推送到iOS应用

Android Studio 2.2 Preview 1 渲染问题

android - noEclipse Juno - 没有找到java虚拟机

android - 如何监视和记录哪个模块在 linux 内核中持有锁?

ios - Google Cloud 功能中仅接收部分 Apple 订阅通知

android - 谷歌云消息 : How to use SHA1 certificate?

android - FCM 能否与 AWS SNS 配合使用?