Проблема связана с получением уведомлений на стороне клиента, когда Интернет слегка нарушен из-за транзитного соединения (1 или 2 секунды), после чего клиент не может получить push-уведомление от FCM до тех пор, пока не будет выполнено правильное отключение и повторное подключение к сети.
Для воспроизведения я подключил клиента (мобильный телефон с приложением и FCM) к Точка доступа Wi-Fi (с использованием мобильных данных) и отправка уведомлений. Он работает так, как ожидалось. Теперь, если я выключу и снова включу мобильные данные (не точку доступа Wi-Fi) (на очень короткую продолжительность, 1 или 2 секунды). После этого мобильное приложение не получало сообщений (Push-уведомления) до тех пор, пока я не отключил точку доступа и Wi-Fi на клиентском устройстве не подключился к какой-либо другой сети (правильное отключение сети)
Для подтверждения я протестировал то же поведение в Microsoft Teams, и там возникла та же проблема. Но, что удивительно, в WhatsApp нет этой проблемы (возможно, они решают ее каким-то другим способом).
Для ясности: я столкнулся с этой проблемой на устройствах iOS и Android. Чтобы решить эту проблему, в iOS я нашел способ перерегистрироваться для получения удаленных уведомлений.
Код: Выделить всё
// Unregister from APNs
UIApplication.shared.unregisterForRemoteNotifications()
// Re-register
UIApplication.shared.registerForRemoteNotifications()
Итак, что происходит (насколько я понимаю), как только Интернет слегка нарушается, FCM не подключается к Интернету снова, и соединение устаревает.
Я не уверен, что это (обходной путь для iOS). это правильный или рекомендуемый способ решения этой проблемы.
Кроме того, я не нашел ничего, связанного с Android, чтобы решить эту проблему. Однако я заметил одну вещь на Android (Google Pixel): при наборе кода *#*#426#*#* он отображает инструмент диагностики FCM, где мы можем визуализировать, установлено или нет соединение FCM. Итак, я отслеживал поведение FCM с помощью описанного выше механизма, и статус FCM был «Подключен» более 5 минут (дальше я не пошел). И в то время на обратном канале не было подключения к Интернету (мобильные данные были отключены), была подключена только точка доступа.
Я проведу еще несколько исследований с использованием некоторых других приложений, чтобы выяснить, есть ли у них такая же проблема, или найти способ повторного подключения на Android (вручную).
Если кто-нибудь может предоставить какую-либо помощь или отзыв, буду рад получить это!
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/798 ... -disturbed
Мобильная версия