Уведомления Firebase FCM не получены на iPhone X - PullRequest
0 голосов
/ 25 июня 2018

У меня есть приложение для iOS (Xcode 9 / Swift 4), которое использует Firebase Cloud Messaging для получения silent push notifications

Приложение уже опубликовано, но пользователи iPhone X НЕ получают уведомления

У меня естьТройной проверил все, все обновлено, включая Google Pods FirebaseMessaging (3.0.2)

Приложение моего сервера (c #), которое генерирует автоматические push-уведомления, также использует последнюю версию Google APIs (1.34)

Таким образом, используя приложение, которое генерирует уведомления, чтобы проверить, получают ли iPhone уведомления, я получил следующие результаты:

  • iPhone 6S, подключенный к Xcode, получает уведомление
  • iPhone 6S, запущенный testflightверсия получает уведомление
  • iPhone 6S, работающий в магазине приложений, версия получает уведомление
  • iPhone X, подключенный к Xcode, получает уведомление
  • iPhone X с запущенной версией testflight НЕ получает
  • Версия магазина приложений для iPhone X НЕ получает

И вот худшая часть ... еслиЯ беру токен iPhone X из приложения c # и отправляю сообщение через консоль Firebase, оно будет получено версией testflight (думаю, это доказывает, что токен, на который я отправляю, правильный)

Я знаю, что не предоставляю код, но на самом деле нечего проверять ... все отлично работает на iPhone 6S и даже на iPhone X, когда он привязан к Xcode.

Я думал, что каким-то образом мой серверIP-адрес не доступен с iPhone X, но это не тот случай, так как во время запуска приложения я подключаюсь к серверу и загружаю данные без проблем ... Как будто у iPhone X был какой-то брандмауэр для предотвращения входящих сообщений с моего IP?Даже если я знаю, что у меня есть разрешение на уведомление приложения на iPhone X (я могу отправить сообщение с консоли Firebase), я создал экран журнала внутри приложения и точно знаю, что разрешение включено.

Я что-то пропустил???Есть ли дополнительное разрешение, которое необходимо включить для iPhone X, о котором я не знаю?

РЕДАКТИРОВАТЬ: Версия iPhoneX для iOS = 11.4

EDIT2: Похоже, что по какой-то причине iPhone X требует, чтобы полезная нагрузка содержала "notification: {"title":"xxx", "body":"xxx"}", что не имеет смысла, поскольку iPhone 6S может получать тихое push-уведомление без этой добавленной полезной нагрузки ... Проблема теперь заключается в том, что добавление "уведомление "для полезной нагрузки заставит iOS показывать уведомление в трее сразу же после его получения, которое превосходит цель" тихого "уведомления, которое я хочу доставить.

Вот предыдущая полезная нагрузка, которая не работает на iPhoneX, но работает на iPhone 6S (FCM позаботится о добавлении тега content-available):

{"message": {"token" : "eANw_OLOKXc:APA.....XsMg", "data" : {"content" : "2546|N|495....arg|BATTERY|||||"}}}

А вот тот, который работает с iPhone X, но выдает системное уведомление, ведь я не хочу:

{"message": {"token" : "eANw_OLOKXc:APA.....XsMg", "notification":{"title":"xxx","body":"xxx"},"data" : {"content" : "2546|N|495....arg|BATTERY|||||"}}}

Почему iPhone 6S работает без полезной нагрузки notification?И как я могу доставить молчаливое уведомление на iPhone X

РЕДАКТИРОВАТЬ 3: Я думаю, что единственным вариантом будет начать новый проект и повторить проблему, так как я застрял ...Я не могу понять, почему при запуске проекта, привязанного к XCode, заставить его работать в iPhone X, но при работе без подключенного USB-кабеля он не получит уведомление.Я забыл упомянуть, что iPhone 6S также установлен на iOS 11.4

РЕДАКТИРОВАТЬ 4: Мне удается получить некоторые журналы непосредственно с iPhone X в момент поступления тихого уведомления:

Jun 26 01:08:46 MP apsd[9726] <Notice>: APSMessageStore - APSIncomingMessageRecordDeleteMessageForGUID <private>
Jun 26 01:08:46 MP SpringBoard(UserNotificationsServer)[9680] <Notice>: Received incoming message on topic com.mydomain.myapp2 at priority 1
Jun 26 01:08:46 MP SpringBoard(UserNotificationsServer)[9680] <Notice>: [com.mydomain.myapp2] Received remote notification request C752-66DA [ hasAlertContent: 0, hasSound: 0 hasBadge: 0 hasContentAvailable: 1 hasMutableContent: 0 ]
Jun 26 01:08:46 MP SpringBoard(UserNotificationsServer)[9680] <Notice>: [com.mydomain.myapp2] Deliver push notification request C752-66DA
Jun 26 01:08:46 MP SpringBoard(UserNotificationsServer)[9680] <Notice>: [com.mydomain.myapp2] Passing content-available push to Duet
Jun 26 01:08:46 MP SpringBoard(DuetActivityScheduler)[9680] <Notice>: SUBMITTING: <private>
Jun 26 01:08:46 MP SpringBoard(UserNotificationsServer)[9680] <Error>: Ignoring notification with no alert, sound or badge (com.mydomain.myapp2): C752-66DA
Jun 26 01:08:46 MP SpringBoard(UserNotificationsServer)[9680] <Notice>: [com.mydomain.myapp2] Not saving push notification C752-66DA to store [ error=Error Domain=UNErrorDomain Code=1401 "Notification has no user-facing content" UserInfo={NSLocalizedDescription=Notification has no user-facing content} ]
Jun 26 01:08:46 MP dasd(DuetActivitySchedulerDaemon)[9752] <Notice>: Submitted Activity: com.apple.pushLaunch.com.mydomain.myapp2:2AD94B <private>
Jun 26 01:08:46 MP dasd(DuetActivitySchedulerDaemon)[9752] <Notice>: Daemon Canceling Activities: {(
    com.apple.pushLaunch.com.mydomain.myapp2:2AD94B
)}
Jun 26 01:08:46 MP dasd(DuetActivitySchedulerDaemon)[9752] <Notice>: CANCELED: com.apple.pushLaunch.com.mydomain.myapp2:2AD94B <private>!

Похоже, что iOS получает уведомление вместе с данными (hasContentAvailable: 1), но не отправляет его в мое приложение ...

Кроме того, почему эта ошибка: <Error>: Ignoring notification with no alert, sound or badge... в тихом уведомлении нет оповещения / звука / значка!

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

У меня были похожие проблемы.Я установил высокий приоритет и добавил следующую полезную нагрузку.

    let message = {
      notification: {
        title: 'title',
        body: `title`
  }
};
   let options = {
     priority: "high",
     timeToLive: 60 * 60 * 24
};

До сих пор она работала нормально.

0 голосов
/ 11 сентября 2018

FirebaseMessaging (3.0.2) имеет проблему с push-уведомлением на 11.4, попробуйте использовать другую версию, например 3.0.6

...