Fcm поддерживает актуальность приложения в фоновом режиме на iOS ⇐ IOS
Fcm поддерживает актуальность приложения в фоновом режиме на iOS
Справочная информация
У меня есть приложение для Android и iOS. Это приложение можно использовать для отслеживания времени и счета матча. Приятной особенностью является то, что другие пользователи Android и iOS могут подписаться на матч и получать обновления через FCM, например, когда меняется счет матча. Вся логика сопоставления находится внутри приложения, а не на сервере. Он прекрасно работает на устройствах Android.
Проблема
На устройствах iOS обновления принимаются нормально, когда приложение находится на переднем плане, но (хотя фоновые уведомления и фоновая обработка включены), как только приложение находится в фоновом режиме более x минут или телефон собирается отключиться. экран блокировки или спящий режим, возникают проблемы. Обновления больше не приходят или поступают с (очень) большой задержкой. Победа над целью обновлений через FCM. Вариант использования: пользователь использует приложение, в какой-то момент кладет телефон в карман и через некоторое время снова проверяет приложение, но если обновления пропущены, отображаемые данные бесполезны.
То, что я уже смотрел
Я прочитал все, что есть об этом на сайте Apple и на этом сайте. В FCM вы можете установить атрибут content_available и/или заголовок apns-priority. При установке заголовка apns-priority, равного 10, мое сообщение отклоняется, потому что это работает только тогда, когда вы также устанавливаете значок, предупреждение и т. д. в сообщении, а не для фоновых обновлений в фоновом режиме. Поэтому я попытался включить значок или установить уведомление в моем FCM MulticastMessage. Любой вариант приводит к тому, что на телефоне отображается новый значок или уведомление, но почему-то приложение не запускается для обработки данных, прикрепленных к тому же сообщению FCM. Похоже, он где-то отброшен и/или iOS не запускает обратный вызов обмена сообщениями в приложении.
Код, используемый для отправки сообщения
При использовании Python для отправки сообщения используется приведенный ниже код. Некоторые строки закомментированы, они использовались для тестирования.
newmessage = messages.MulticastMessage( данные = мои пользовательские данные, уведомление = message.Notification(title = 'Заголовок', body = 'Тело сообщения'), токены = токены устройства, android = messages.AndroidConfig(приоритет = 'высокий'), apns = обмен сообщениями.APNSConfig( #headers = {'apns-priority': '10', 'apns-collapse-id': message['code']}, #payload = messages.APNSPayload(aps = messages.Aps(badge=1, content_available=1)) заголовки = {'apns-collapse-id': сообщение['код']}, полезная нагрузка = messages.APNSPayload(aps = messages.Aps(content_available=1)) )) Вопросы
[*]Есть ли способ отправить многоадресное сообщение с помощью FCM для устройств Android и iOS, которое будет иметь приоритет apns 10 для устройств iOS, где мои пользовательские данные по-прежнему будут обрабатываться приложением? Со значком, звуком или оповещением или без него? [*]Похоже, что Apple пытается перенести всю логику на удаленный сервер и заставить этот сервер отправлять обновления с учетом особенностей устройства. Правда ли, что из-за этого моя текущая настройка никогда не будет работать, когда приложение находится (более x минут) в фоновом режиме или телефон находится на экране блокировки или находится в спящем режиме для устройств iOS?
Возможное решение
Если ответ на вопрос № 2 положительный, то единственный способ, которым это когда-либо будет работать, — это отправлять оповещения с уведомлениями, адаптированными к устройству, и как только приложение выйдет из спящего / фонового режима, оно будет запрашивать последние обновления, используя API-вызов. Правильный? Или есть другой способ?
Справочная информация
У меня есть приложение для Android и iOS. Это приложение можно использовать для отслеживания времени и счета матча. Приятной особенностью является то, что другие пользователи Android и iOS могут подписаться на матч и получать обновления через FCM, например, когда меняется счет матча. Вся логика сопоставления находится внутри приложения, а не на сервере. Он прекрасно работает на устройствах Android.
Проблема
На устройствах iOS обновления принимаются нормально, когда приложение находится на переднем плане, но (хотя фоновые уведомления и фоновая обработка включены), как только приложение находится в фоновом режиме более x минут или телефон собирается отключиться. экран блокировки или спящий режим, возникают проблемы. Обновления больше не приходят или поступают с (очень) большой задержкой. Победа над целью обновлений через FCM. Вариант использования: пользователь использует приложение, в какой-то момент кладет телефон в карман и через некоторое время снова проверяет приложение, но если обновления пропущены, отображаемые данные бесполезны.
То, что я уже смотрел
Я прочитал все, что есть об этом на сайте Apple и на этом сайте. В FCM вы можете установить атрибут content_available и/или заголовок apns-priority. При установке заголовка apns-priority, равного 10, мое сообщение отклоняется, потому что это работает только тогда, когда вы также устанавливаете значок, предупреждение и т. д. в сообщении, а не для фоновых обновлений в фоновом режиме. Поэтому я попытался включить значок или установить уведомление в моем FCM MulticastMessage. Любой вариант приводит к тому, что на телефоне отображается новый значок или уведомление, но почему-то приложение не запускается для обработки данных, прикрепленных к тому же сообщению FCM. Похоже, он где-то отброшен и/или iOS не запускает обратный вызов обмена сообщениями в приложении.
Код, используемый для отправки сообщения
При использовании Python для отправки сообщения используется приведенный ниже код. Некоторые строки закомментированы, они использовались для тестирования.
newmessage = messages.MulticastMessage( данные = мои пользовательские данные, уведомление = message.Notification(title = 'Заголовок', body = 'Тело сообщения'), токены = токены устройства, android = messages.AndroidConfig(приоритет = 'высокий'), apns = обмен сообщениями.APNSConfig( #headers = {'apns-priority': '10', 'apns-collapse-id': message['code']}, #payload = messages.APNSPayload(aps = messages.Aps(badge=1, content_available=1)) заголовки = {'apns-collapse-id': сообщение['код']}, полезная нагрузка = messages.APNSPayload(aps = messages.Aps(content_available=1)) )) Вопросы
[*]Есть ли способ отправить многоадресное сообщение с помощью FCM для устройств Android и iOS, которое будет иметь приоритет apns 10 для устройств iOS, где мои пользовательские данные по-прежнему будут обрабатываться приложением? Со значком, звуком или оповещением или без него? [*]Похоже, что Apple пытается перенести всю логику на удаленный сервер и заставить этот сервер отправлять обновления с учетом особенностей устройства. Правда ли, что из-за этого моя текущая настройка никогда не будет работать, когда приложение находится (более x минут) в фоновом режиме или телефон находится на экране блокировки или находится в спящем режиме для устройств iOS?
Возможное решение
Если ответ на вопрос № 2 положительный, то единственный способ, которым это когда-либо будет работать, — это отправлять оповещения с уведомлениями, адаптированными к устройству, и как только приложение выйдет из спящего / фонового режима, оно будет запрашивать последние обновления, используя API-вызов. Правильный? Или есть другой способ?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение