FCM 通知在发布应用程序中不起作用

FCM notifications not working in release app

我正在尝试在没有接收到的发布应用程序中发送 FCM 通知(在用户之间发送消息、好友请求等),但它们 sending/receiving 在调试 apk 中非常好,我已经搜索过这个并找到了一些对我不起作用的解决方案

像这样,我把它放在了亲卫规则中,但没有用

 -keep class com.google.firebase.* {*;}

在我的AndroidManifest.xml

        <service
            android:name=".notifications.MyFirebaseMessaging"
            android:enabled="true"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

        <service
            android:name=".notifications.MyFirebaseInstanceId"
            android:enabled="true"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
            </intent-filter>
        </service>

和其他依赖项,我没有在此处包括它们,因为该应用程序在调试模式下运行良好

已编辑

我已经有了

  1. 已生成发行版 SHA-1 和 SHA-256 密钥
  2. 在 firebase 控制台中添加它们
  3. 还在 firebase 中添加了 Google 控制台应用签名 SHA-1 和 SHA-256 密钥
  4. 然后下载Google-services.json文件并添加到app模块

您是否从正确的 jks 文件路径获得 SHA-1 密钥?

您尚未将用于发布的 SHA-1 密钥添加到您的 firebase 控制台,因此不存在于您的 google-services.json.

  1. 生成要发布的 SHA-1
  2. 将您的版本 SHA-1 添加到 firebase 控制台
  3. 下载并使用新的 google-services.json.

如果您正在使用 Google 玩应用签名。确保在第 2 步中也添加了 Play 商店用于签署您的版本的密钥

嗯,我昨晚刷牙的时候自己找到了问题的解决方法。 这两个答案都帮助了我很多,因为我不知道发布版本需要一个 SHA 密钥,所以它们对我很有帮助。

我已成功生成 SHA 密钥并将它们存储在 firebase 控制台中,但通知仍然无法正常工作,所以我发现我不允许 Proguard Rules 访问 firebase 通知服务,所以我只是添加了这个在那里排队

 -keepclassmembers class com.example.app.notifications.* {
      *;
    }

现在它神奇地工作了。