Облачные сообщения Google показывают сообщение об успешности, но не отправляют iOS

Таким образом, у меня возникла очень странная проблема с облачными сообщениями Google. Проблема, с которой я сталкиваюсь, заключается в том, что она успешно регистрирует устройства, и когда отправляется сообщение, я получаю сообщение об успешном завершении от Google. Но устройства никогда не получают никаких сообщений.

Сообщение, которое я получаю от GCM:

"result": "Push notification sent successfully: {\"multicast_id\":6008387530769664000,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1442824842607522%73fc535e73fc535e\"}]}"

Чтобы сделать вещи еще более запутанными, моя реализация работала около 2 недель назад, и я ничего не изменил до настоящего времени. Android-версия приложения получает сообщения без каких-либо проблем, но только реализация iOS не работает.

Любая помощь будет очень признательна!

Спасибо!

Ответ 1

Итак, я, наконец, решил этот вопрос после того, как вытащил последние оставшиеся волосы из головы.

Оказывается, устройства получают сообщения, но GCM устанавливает приоритет на самый низкий приоритет по умолчанию. Это означает, что устройство получает уведомление, но не отображает его. Этот приоритет используется для тихих уведомлений, чтобы разбудить приложение в фоновом режиме. Я обнаружил это, потому что я продолжал получать сообщение в консоли, говоря:

Низкий приоритет: [com.test.app] - обновление фона не поддерживается

Приоритет - это значение от 1 до 10, поэтому я устанавливаю приоритет 10 и мгновенно получаю сообщение на устройстве. Мое тело запроса GCM POST выглядит следующим образом:

{
  "to": "GCM token here",
  "notification": {
    "sound": "default",
    "badge": "2",
    "title": "default",
    "body": "Test Push!",
  },
   "priority" : 10,
} 

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

(ノ ಠ 益 ಠ) ノ

EDIT:

Вы можете установить "приоритет" на "высокий", и это работает точно так же, как установка его на "10" (приоритет - это значение от 0 до 10. Google скрывает текст до номера для iOS

Ответ 2

Вместо добавления "приоритета": 10, Вы должны добавить следующую строку: "content_available": true,

В APNS-сервере (iOS), Content_avaialble изменяется на 1, что приводит к push-уведомлению в фоновом режиме. И добавив "приоритет": 10, слейте больше батареи iphone. В моем случае у меня даже нет ничего, что связано с приоритетом, но оно все еще работает.