Пуш-уведомления iOS не всегда доставляются: в зависимости от количества символов + скорость wifi-соединения + свободное место на устройстве?
В App Store есть приложение на основе Swift, в которое входит командный мессенджер.
У нас возникают проблемы с доставкой некоторых фоновых push-уведомлений.
Если мы войдем в систему с одной и той же учетной записью на устройстве iOS и Android, все push-уведомления появятся на устройстве Android, в то время как на устройстве iOS отобразятся только некоторые push-уведомления.
Исходя из этого, проблема, похоже, не связана с бэкэндом. Проходя по коду Swift, все тоже вроде бы хорошо, и мы также получаем некоторые push-уведомления.
Настроить:
- Мы отправляем push-уведомления напрямую из бэкэнда (node.js) через APNS на устройства iOS. Мы не используем промежуточного провайдера (например, Pusher).
Описание проблемы:
- Тестирование на 3 устройствах (полностью заряженный аккумулятор, Bluetooth выключен, функция "Не беспокоить" отключена, не установлено ни одного приложения, которое может блокировать push-уведомления и т. Д.).
- Устройство A: iPhone5 на iOS 10.3.3 - 7 ГБ свободного места.
- Устройство B: iPhone5 на iOS 10.3.3 - 9 ГБ свободного места.
- Устройство C: iPhone5S на iOS11.
Тест на медленном Wi-Fi-соединении (хотя тест скорости показывает скорость загрузки 22 Мбит / с):
- Все push-уведомления с 10 символами прошли на всех 3 устройствах.
- Push-уведомления с +20 символов были показаны только на устройстве B + C.
- Выше +30 символов, на устройство B + C не поступают push-уведомления.
Тест на более быстрое соединение Wi-Fi:
- Используются те же устройства А и В. Устройство C не включено.
- Push-уведомления, содержащие до 497 символов, принимаются и отображаются на обоих устройствах A + B.
- Push-уведомления длиной более 509 символов никогда не принимаются ни на одном из этих двух устройств.
- Короткие сообщения (менее 10 символов), мгновенно отправленные после сообщения "509 символов", не принимаются -> Похоже, что уведомления временно заблокированы. Через минуту или около того короткие уведомления толчка (например, 10 символов) принимаются и отображаются снова. Все короткие сообщения принимаются и отображаются до тех пор, пока мы снова не отправим длинное сообщение, которое блокирует доставку push-уведомлений.
Повторите тестирование на более медленном Wi-Fi-соединении - теперь происходит то же поведение, что и на более быстром соединении. Push-уведомления, содержащие не более 500 символов, отображаются, в то время как push-уведомления с большим количеством символов не проходят и, по-видимому, блокируют доставку небольших push-уведомлений, отправляемых впоследствии.
Размер полезной нагрузки не должен быть проблемой: поскольку мы на устройстве A изначально не получали push-уведомления выше +20 символов при медленном Wi-Fi-соединении, но можем получать push-уведомления с 497 символами на одном устройстве при более быстром Wi-Fi-соединении Я думаю, мы должны исключить, что проблема связана с размером полезной нагрузки. Ты согласен?
Может ли быть так, что комбинация этих трех параметров может повлиять на то, доставлено push-уведомление или нет?
- Длина сообщения + скорость Wi-Fi соединения + свободное место доступно
Любое предложение о том, как решить эту проблему, чтобы обеспечить доставку всех push-уведомлений и избежать временной блокировки / недоставки, с которыми мы сталкиваемся?
Заранее спасибо,
Andreas