FCM - Push-уведомление работает только в консоли, а не в почтальоне

Мое приложение разработано на NativeScript. Для FCM я использую nativescript-plugin-firebase.

Я получал push-уведомление всякий раз, когда пытался с консоли FCM. Но я никогда не получал push-уведомление, когда пытался от почтальона, как показано ниже.

URL : POST : https://fcm.googleapis.com/fcm/send
Headers : Authorization = key = "******", Content-Type=application/json

Данные :

{
    "data": {
        "title": "RAJA RAJA",
        "message": "another test",
        "name": "Muthukumar ME"
    },
    "to" : "**************************************"
}

Ответ :

{
    "multicast_id": 5806593945960213086,
    "success": 1,
    "failure": 0,
    "canonical_ids": 0,
    "results": [
        {
            "message_id": "0:1521623661699559%161a06bff9fd7ecd"
        }
    ]
}

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

Вы следовали руководству это?

Michal 21.03.2018 10:35

Да, я следил за инструкцией. Тем не менее, я не получаю push-уведомление, даже если получил успешный ответ.

Muthukumar Marichamy 21.03.2018 11:08

Вы пробовали добавить полезную нагрузку notification? Как отмечено (здесь) [stackoverflow.com/questions/40809784/….

Michal 21.03.2018 11:53

Попробуйте отправить полезную нагрузку notification вместо data. При отправке сообщений с помощью консоли используется полезная нагрузка сообщения notification (упоминается как здесь). Возможно полезный пост здесь.

AL. 21.03.2018 11:58

Здесь я подробно объясняю, какие полезные данные необходимо отправлять с помощью этого плагина и Postman github.com/NickIliev/….

Nick Iliev 21.03.2018 12:16

Если вы хотите использовать полезную нагрузку данных, вам нужно обработать ее вручную.

Paras Watts 21.03.2018 12:57
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
4
6
3 408
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий
{ 
    "to" : "********",
    "priority": "high",
    "notification": {
        "title": "Title",
        "body" : "First Notification",
        "text": "Text"
    }
}

это уведомление "уведомление", он пытается отправить уведомление "данные" - это неправильный ответ - они работают по-другому, и получение одного не означает, что вы получите другое, и, возможно, уведомления о данных - это те ты хочешь

Saik Caskey 11.05.2018 17:09

Отправка сообщения с данными по протоколу HTTP с помощью POSTMAN

Вам необходимо скопировать ключ сервера Legecy из Firebase Console> Project Settings> Cloud Messaging.

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

Выберите POST. Введите URL-адрес запроса как https://fcm.googleapis.com/fcm/send Добавьте заголовки Authorization: key = OR Authorization: key = и Content-Type: application / json.

Настройка с POSTMAN Теперь выберите Body> raw> JSON (application / json) и добавьте следующий код:

{
 "to" : "YOUR_FCM_TOKEN_WILL_BE_HERE",
 "collapse_key" : "type_a",
 "notification" : {
     "body" : "First Notification",
     "title": "Collapsing A"
 },
 "data" : {
     "body" : "First Notification",
     "title": "Collapsing A",
     "key_1" : "Data for key one",
     "key_2" : "Hellowww"
 }
}

Вы можете нажать Общее уведомление (с полезной нагрузкой уведомления) или Пользовательское уведомление (с уведомлением и полезной нагрузкой данных) и нажать «Отправить».

{
 "to" : "YOUR_FCM_TOKEN_WILL_BE_HERE",
 "collapse_key" : "type_a",
 "data" : {
     "body" : "First Notification",
     "title": "Collapsing A",
     "key_1" : "Data for key one",
     "key_2" : "Hellowww"
 }
}

Обратите внимание, что настраиваемое уведомление будет срабатывать, только если в полезной нагрузке есть только узел данных (без уведомления). Следовательно, вам нужно переместить тело и заголовок в узел данных.

Помните: используйте registration_ids вместо to node, если вы хотите отправить уведомление на несколько устройств с соответствующими firebase_instance_id.

Я отправляю уведомление по таким «темам», как: -

{
 "to" : "/topics/XXXX",

 "notification" : {
     "body" : "First Notification",
     "title": "Collapsing A",
     "click_action":"DisplayTestActivity"
 },
 "data" : {
     "body" : "First Notification",
     "title": "Collapsing A",
     "key_1" : "Data for key one",
   "click_action":"DisplayTestActivity"
 }
}

если вы отправляете подобное уведомление и не можете получить его через почтальона, тогда

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

FirebaseMessaging.Instance.SubscribeToTopic("XXXX");
if (!GetString(Resource.String.google_app_id).Equals("XXXXXXXXXXXXXXXXXXXXX"))  throw new System.Exception("Invalid Json file");
Task.Run(() =>
{

    var instanceId = FirebaseInstanceId.Instance;
    instanceId.DeleteInstanceId();
    Android.Util.Log.Debug("TAG", "{0} {1}", instanceId.Token, instanceId.GetToken(GetString(Resource.String.gcm_defaultSenderId), Firebase.Messaging.FirebaseMessaging.InstanceIdScope));

});

* приведенный выше код находится на C#, поэтому используйте свой язык программирования. Благодарность

  1. Откройте свое приложение на мобильном телефоне и подключите его к ПК.
  2. Затем после открытия хрома и вставки этого chrome://inspect/#devices в Remote Target Hit Inspect: Демо1
  3. Затем после того, как вы увидите registrationId в разделе зарегистрированное устройство
  4. Скопируйте этот идентификатор и вставьте его после "to": "registrationId" в POSTMAN: Демо2

Надеюсь, поможет!

Другие вопросы по теме