Сервисы Google Play 8.4.0 ломают Google Cloud Messaging для Android, если также используется iOS

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

После обновления сервисов Google play до 8.4.0 push-уведомления отображаются самостоятельно

Уведомление Android не показывает его содержание, когда приложение не запущено

Что означает gcm.notification.e = 1 для полезных данных push-уведомлений на Android?

Суть проблемы заключается в том, что если вы создаете сообщение GCM только с данными (то есть не используете поле уведомления и, следовательно, не намереваетесь сгенерировать уведомление), И вы включаете content_available = True (что необходимо для получения желаемого поведения от клиентов iOS), затем начиная с 8.4.0, это создает нежелательное пустое уведомление в Android.До 8.4.0 все работало просто отлично.

Специфика проблемы заключается в том, что если клиент Android получает поле GCM, которое он не понимает, вместо того, чтобы просто игнорировать его, он добавляет поле «e = 1» (предположительно, «e» означает ошибку?) В качестве уведомлениядаже если в сообщении не было никакого уведомлениявызывая его запуск кода, который делает уведомление, а не кода, который направляет его в приложение, которое будет обработано.

Возможный обходной путь: я предполагаю, что можно отслеживать на сервере, какие клиенты были iOS, а какие - Android, и включать только тег content_available для клиентов iOS, и эта проблема будет решена. Однако в прошлом этого не требовалось, и моя система была построена с мыслью, что я могу быть независимым от типов клиентов, как это и предполагалось.

Тот факт, что флаг content_available внезапно приводит к появлению этих пустых уведомлений в Android, кажется недавно появившейся ошибкой, но было бы очень полезно узнать, действительно ли это ошибка, которая может быть исправлена ​​в 8.5.0 (в этом случае я может просто собрать с 8.3.0 на данный момент, пока не выйдет 8.5.0), или если он предназначен для постоянного решения. Если это не изменится, является ли правильным решением отслеживать, какие регистрационные идентификаторы GCM принадлежат устройствам iOS, а какие - устройствам Android, а затем каждый раз отправлять два отдельных запроса GCM?

Заранее благодарим за любые официальные ответы на этот вопрос от команды Google.

Ответы на вопрос(3)

Ваш ответ на вопрос