Отправлено сообщение 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
Элемент коллекции, представляющий приложение на мобильном устройстве, появляется с некоторой задержкой. Но если сертификаты действительны, это будет гарантировано.