Невозможно отправить тихие push-уведомления на iOS с помощью FCM - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь отправить уведомление о данных в режиме без вывода сообщений на устройство iOS с помощью модуля node.js firebase-admin 7.0.0 и следующий код:

// load lib
var firebase = require('firebase-admin');

// add API keys
firebase.initializeApp({
    credential: firebase.credential.cert('./certs/firebase-private-key.json')
});

// device token send back from device
var token = '00397db1aa2f1fa625f71deef0c8e8ef0d4427cf60a13c0fb4bd290dcec41f4b';

// data message to send (contains no notification details so should be silent)
var message = {
   data: {
      key1: 'hello',
      key2: 'world'
   }
};

var options = {
    priority: 'high',
    timeToLive: 60 * 60 * 24,
    contentAvailable: true,
    mutableContent: true
};

// send the message
firebase.messaging().sendToDevice(token, message, options).then(function (res) {
    // it worked!
    console.log(res);
})
.catch(function (err) {
    // it failed :(
    console.log(err);
});

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

{"aps":{ "content-available": 1,"badge":0, "hello": "there" }}

Любые идеи?

К вашему сведению: Я также открыл билет на GitHub

Ответы [ 3 ]

0 голосов
/ 11 марта 2019

Ваш код выглядит правильно.Вы можете попробовать несколько комбинаций true и false в изменчивом контенте и доступном контенте.И вы также можете попробовать не отправлять mutableContent поля.Но, насколько я помню, оба должны быть правдой.

Другой способ отладки - проверить, что json выходит из nodejs.Вы можете попробовать ту же полезную нагрузку в NWPusher или PostMan.Это даст вам некоторую подсказку.

Я опробовал следующую полезную нагрузку в почтальоне, для меня это нормально работает

{"mutable_content":true,"content_available" : true,"priority":"high","registration_ids":["d3-fa7XDQQ4:APA91bEKXbT3HAv6ko9RukcxaB4QBr8zOIT06CBpj9o0Sl6TxsMpTnAMQ86t14foIcuQuDUyzMApbvDORELYyD0WOX3BcfP7ZNtWx9uY0JGm2B7cmdlPoOFs68fe6rz3Q7tq_8Ib7Y4H"]}
0 голосов
/ 12 марта 2019

Для уведомлений в режиме без вывода сообщений вам необходимо убедиться в следующем:

1 - в вашей полезной нагрузке нет alert ключа в вашей полезной нагрузке

2 - в вашей content-available" : 1полезная нагрузка

3- Фоновый режим для push-уведомлений включен (выберите цель> Возможности> Фоновые режимы> Удаленное уведомление)

пример полезной нагрузки:

{
    "aps" : {
        "content-available" : 1
    },
    "acme1" : "bar",
    "acme2" : 42
}

для получения дополнительной информацииссылка Apple Checkout: Обновление вашего приложения в фоновом режиме

0 голосов
/ 27 февраля 2019

Это версия PHP для отправки без вывода сообщений для ios.Пожалуйста, добавьте «content-available» => 1 для тихого уведомления

 $body = array(
   'content-available' => 1,
   'sound' => ''
 ); 

{
  "aps" : {
    "alert" : "Notification with custom payload!",
    "badge" : 1,
    "content-available" : 1
  },
  "data" :{
    "title" : "Game Request",
    "body" : "Bob wants to play poker",
    "action-loc-key" : "PLAY"
  }
}
...