Отправлено сообщение 0 приложениям ios 0 приложениям для Android от raix:push

Я работаю над приложением Meteor+Cordova, которое использует пакет raix:push для поддержки push-уведомлений. И у меня есть очень простая конфигурация, которая предназначена для APNS и только для режима разработки, и выглядит так:

{
  "apn-dev": {
    "passphrase": "qwe[]\\qwe[]\\",
    "key": "PushChatKey.pem",
    "cert": "PushChatCert.pem"
  },
  "apn": {},
  "gcm": {},
  "production": false,
  "badge": true,
  "sound": true,
  "alert": true,
  "vibrate": true
}

Это относится к файлам PushChatKey.pem и PushChatCert.pem, которые правильно помещены в private / folder. Пароль правильный.

Я использую простую серверную часть для отправки push-уведомлений:

Meteor.methods({
  sendPushNotification: function ({userId = this.userId, title = 'Hello', text = 'and welcome!'} = {}) {
    Push.send({
      title,
      text,
      from: 'push',
      badge: 14,
      query: {
        userId
      }
    });
  }
});

Проблема в том, что, хотя сертификаты в порядке, а конфигурация верна, вызов метода

Meteor.call('sendPushNotification', {}, (error, response) => console.log(error, response))

ничего не делает. Возвращается undefined, а также оба error а также response не определены (как и ожидалось). Есть даже несколько коротких манипуляций над notification коллекция появляется, а затем исчезает после того, как, я полагаю, было отправлено соответствующее push-уведомление.

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

Settings userId "J5baP7xvbuTTX4KTk" for app: mytSJW2xrbKWRuGBZ
Send message "Hello" via query {}
Sent message "Hello" to 0 ios apps 0 android apps

Итак, мой вопрос, что я делаю не так? Я что-то упускаю в конфигурации или в коде на стороне сервера или на стороне клиента (у меня нет ни одного из последних, которые бы ссылались на push-уведомления)? Кто-нибудь сталкивался с таким же препятствием? Какое было решение?

1 ответ

Во-первых, я использовал неправильный сертификат и ключ, и это является прямым следствием путаницы вопросов и ответов и учебных пособий. Я должен был использовать сертификат и закрытый ключ, экспортированные из сертификата, который я скачал с панели инструментов Apple Developer, который был сгенерирован в ответ на мой запрос сертификата. Я использовал правильный сертификат, но неверный закрытый ключ. После выбора правильного закрытого ключа все было хорошо, кроме одного.

По какой-то причине (а я до сих пор не выяснил, почему), приложение получает токен APN от Apple только после второго или третьего запуска, то есть не сразу после того, как пользователь подтверждает получение push-уведомлений, но с некоторой задержкой. И Push.appCollection коллекция не получит обновление для соответствующей записи, пока приложение не будет запущено снова.

Более того, даже Push.appCollection Элемент коллекции, представляющий приложение на мобильном устройстве, появляется с некоторой задержкой. Но если сертификаты действительны, это будет гарантировано.

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