java - 当我使用 FCM 从 Ruby on Rails 后端发送推送通知时,Android 应用程序关闭

标签 java android ruby-on-rails ruby firebase-cloud-messaging

我正在尝试使用 FCM gem 向 Android 手机发送推送通知消息。我能够获取设备 token ,并且我认为我已按照应有的方式设置了所有内容。仅当我使用 ruby​​ 后端发送测试消息时,我才会收到以下响应:

{:body=>"{\"multicast_id\":7171621681139926581,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1556626239337337%e087ffcde087ffcd\"}]}", :headers=>{"content-type"=>["application/json; charset=UTF-8"], "date"=>["Tue, 30 Apr 2019 12:10:39 GMT"], "expires"=>["Tue, 30 Apr 2019 12:10:39 GMT"], "cache-control"=>["private, max-age=0"], "x-content-type-options"=>["nosniff"], "x-frame-options"=>["SAMEORIGIN"], "x-xss-protection"=>["1; mode=block"], "server"=>["GSE"], "alt-svc"=>["quic=\":443\"; ma=2592000; v=\"46,44,43,39\""], "accept-ranges"=>["none"], "vary"=>["Accept-Encoding"], "connection"=>["close"]}, :status_code=>200, :response=>"success", :canonical_ids=>[], :not_registered_ids=>[]}

但在电话上我没有收到通知。

我的 ruby​​ 后端看起来像这样:

fcm_client = FCM.new(server_key)

    # options = {:notification => "Test notification",:data => {:message => "This is a FCM Topic Message!"}}
    options = { "notification": {
        "title": "Portugal vs. Denmark",
        "body": "5 to 1"
        }
    }

    user_device_ids.each_slice(20) do |device_ids|

        response =  fcm_client.send_notification(device_ids, options)

        p response
    end

当应用程序打开时,它会关闭,我发现此错误:

java.lang.RuntimeException: Unable to instantiate service NAME_OF_THE_APP.java.MyFirebaseMessagingService: java.lang.ClassNotFoundException: Didn't find class "NAME_OF_THE_APP.java.MyFirebaseMessagingService"

现在我不是 Java 专家所以我不知道此时出了什么问题。我正在华为手机上进行测试。

最佳答案

已经发现我的错了。我遵循了 firebase 云消息传递指南,在我的 Androidmanifest 中,文档说您需要传递此信息:

<service
  android:name=".java.MyFirebaseMessagingService"
  android:exported="false">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>

但是它给了我一个错误,它无法找到该类。经过一番搜索,发现android名称错误:

应该是:

<service
        android:name="com.google.firebase.messaging.FirebaseMessagingService">
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>

关于java - 当我使用 FCM 从 Ruby on Rails 后端发送推送通知时,Android 应用程序关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55920997/

相关文章:

java - 在javafx中加载多个fxml

java - SQL 查询中转义换行符

java GUI 几秒钟没有响应

java - 如何从中获取随机测验问题并在测验问题结束时添加听众

ruby-on-rails - Ruby 中的 "system()"调用会等到它完成吗?

java - 插入排序算法未按预期工作

安卓NDK : UnsatisfiedLinkError when using OpenAL shared library

android - 避免在 Android 布局中使用数字?

ruby-on-rails - VBA Heroku 集成?

ruby-on-rails - 现在 Rails : Compare DateTime with Time.