как обрабатывать FCM сообщение и заголовок, когда приложение в фоновом режиме - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь получить данные из Уведомления, когда приложение убито или в фоновом режиме вот что я сделал: php side:

 $msg = array
      (
    'body'  => $msg,
    'title' => $title,
    'click_action' => "OPEN_ACTIVITY_1"

      );
$fields = array
        (
            'to'        => $token,
            'notification'  => $msg
        );


$headers = array
        (
            'Authorization: key=' . API_ACCESS_KEY,
            'Content-Type: application/json'
        );

в моем ланчере. Активность:

if(getIntent().getExtras()!=null){
   Strig msg = getIntent().getExtras().getString("body");
   String title =getIntent().getExtras().getString("title");
   Log.i(TAG,"Message "+msg);
   Log.i(TAG,"Title " +title);

 }

Возвращается нулевое значение как для сообщения, так и для заголовка. Вот код для onMessageReceived ()

public void onMessageReceived(RemoteMessage remoteMessage) {
    clickAction= remoteMessage.getNotification().getClickAction();
    NotificationHelper h = new NotificationHelper(this);
    Map<String,String >data = remoteMessage.getData();
    title=data.get("title");
    msg=data.get("body");
    Log.i(TAG, "onMessageReceived: "+clickAction);
    h.createNotificationWithId(msg,title,clickAction);
}

1 Ответ

0 голосов
/ 06 июня 2018

Проблема, с которой вы столкнулись, связана со структурой полезной нагрузки JSON.

См. этот вопрос здесь для получения дополнительных примеров.

В результате, если у вас есть ключ и значение объекта «уведомление», вы не сможете обработатьonMessageПолучено в фоновом режиме.

//Will not work in your situation
{
  "notification":{
    "title": "hello",
    "body": "this is body"
  },
  "to": "c5iuJ7iDnoc:APA91bG6j2c5tiQ3rVR9tBdrCTfDQYxkPwLuNFWzRuGHrBpWiOajR-DKef9EZEEVKA-kUBfXVcqHT-mClYfad06R_rBjhRZFKVdBL7_joXE5hFEwR45Qk8wgQdia2b-LmjI1IheFGZS8"
}

Хотя это будет работать, потому что уведомление отсутствует, но присутствует ключ «данные».

//This will work for your situation
{
  "data":{
    "title": "hello",
    "body": "this is body"
  },
  "to": "c5iuJ7iDnoc:APA91bG6j2c5tiQ3rVR9tBdrCTfDQYxkPwLuNFWzRuGHrBpWiOajR-DKef9EZEEVKA-kUBfXVcqHT-mClYfad06R_rBjhRZFKVdBL7_joXE5hFEwR45Qk8wgQdia2b-LmjI1IheFGZS8"
}

Еще одна вещь, если у вас есть и ключи «уведомления», и «данные», по умолчанию будет использоваться первый пример, и вы не сможете вручную обработать его в onMessageReceived

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...