Приложение Android закрывается, когда я отправляю push-уведомление из бэкэнда Ruby on Rails с FCM - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь отправить push-уведомления с помощью драгоценного камня FCM на телефон Android. Я могу получить токен устройства и думаю, что все настроил так, как должно. Только когда я использую свой 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=>[]}

но по телефону я не получаю уведомления.

мой рубиновый бэкэнд выглядит так:

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: невозможно создать экземпляр службы NAME_OF_THE_APP.java.MyFirebaseMessagingService: java.lang.ClassNotFoundException: не нашел класс "NAME_OF_THE_APP.java.MyFirebaseMessagingService"

Теперь я не эксперт по Java, поэтому я не знаю, что не так на этом этапе. Я тестирую его на телефоне Huawei.

1 Ответ

0 голосов
/ 30 апреля 2019

Уже нашел мою ошибку.Я следовал руководству по облачным сообщениям Firebase, и в Mij Androidmanifest в документации сказано, что вы должны пройти мимо этого:

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

, но затем выдает ошибку, которую не может найтикласс.После небольшого поиска, если найдено, что имя андроида было неправильным:

Это должно было быть:

<service
        android:name="com.google.firebase.messaging.FirebaseMessagingService">
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...