Я пытаюсь использовать GCM для клиентов IOS и Android. Кажется, что с IOS отлично работает, когда приложение находится на переднем плане, однако, когда приложение находится в фоновом режиме, центр уведомлений не получает сообщение, а didReceiveRemoteNotification with completionHandler
не вызывается.
Я идентифицировал проблему как неверно отформатированное сообщение от GCM к APNS. А именно, как выглядит:
[message: New message, collapse_key: do_not_collapse, from: **************]В то время как уведомления IOS push должны иметь
aps
ключ в уведомлении, я прав? Доступно также доступное содержимое для 1. Например:
{ "aps": { "контент-доступный": 1 }, "data-id": 345 }
Кстати, в первом приложении приложение все равно получает сообщение, проблема только в фоновом режиме. Любые советы о том, как мне подойти к проблеме, чтобы GCM работал как для ios, так и для android?
UPDATE: Это то, что я нашел в сети:
Что касается реальной связи, если приложение находится в фоновом режиме на устройстве iOS, GCM использует APNS для отправки сообщений, причем приложение ведет себя аналогично использованию системы уведомлений Apple. Но когда приложение активно, GCM напрямую связывается с приложением
Итак, сообщение, которое я получил в режиме переднего плана:
[сообщение: новое сообщение, collapse_key: do_not_collapse, from: **************]
Было ли прямое сообщение от GCM (APNS вообще не участвовал в этом деле). Итак, вопрос в том, что APNS переформатирует то, что GCM отправляет ему, чтобы придерживаться формата уведомлений ios? Если да, то откуда я знаю, что APNS действительно что-то делает и отправляет ли мне уведомление в другом формате? Есть ли способ просмотреть журналы входящих данных из APNS?
UPDATE: Хорошо, мне удалось изменить структуру сообщения, и теперь в режиме переднего плана я получаю следующее сообщение:
Получено оповещение: [ "aps": { "alert": "Простые сообщения", "контент-доступный": 1}, collapse_key: do_not_collapse, from: ************** ]
Теперь он, кажется, хорошо отформатирован, но реакция еще не срабатывает, когда приложение находится в фоновом режиме. didReceiveRemoteNotifification completeHandler не вызван! Что я должен искать и где может быть проблема? Может ли квадратная скобка быть проблемой для push-уведомления? Чтобы быть более точным, ios не размещает никаких предупреждений/значков/баннеров из этого входящего уведомления.