Обрабатывать сообщение с данными и полезной нагрузкой уведомления из onMessageReceived

Мне нужно отправить сообщение, содержащее полезную нагрузку «данные» и «уведомление». Сообщение будет отправлено в тему, подписчиком которой может быть устройство iOS или Android.

Есть ли в Android какой-либо способ, чтобы сообщение с уведомлением и полезной нагрузкой данных всегда получалось в onMessageReceived, а не в системном трее и в дополнительных элементах намерения? Это в том числе, когда приложение находится в фоновом режиме.

Я не могу удалить полезную нагрузку уведомления (отправить только полезную нагрузку «данные»), потому что полезная нагрузка уведомления необходима для подписчика iOS


comment
Согласно документам, получение сообщения в фоновом режиме поведение самого Android. Не уверен, что ты сможешь это изменить. Вместо этого я думаю о том, что, возможно, есть способ проверить намерение системного трея / дополнительных функций, а затем направить поток к тому же методу, который находится в вас onMessageReceived(). Просто мысль, т.к.   -  person AL.    schedule 14.09.2016


Ответы (1)


Возможно, если это поможет, это объекты (C#), которые я использовал для отправки уведомлений как для IOS, так и для Android.

    internal class jsonObj
    {
        //public bool delay_while_idle { get; set; }
        public data data { get; set; }
        public notification notification { get; set; }
        public string to { get; set; }
        public string priority { get; set; }
    }

    internal class data
    {
        public int Id { get; set; }
        public int commentId { get; set; }
        public string type { get; set; }
        public string DisplayName { get; set; }
        public string licensePlateCode { get; set; }
        public int licensePlateId { get; set; }
        public string text { get; set; }
    }

    internal class notification
    {
        public string title { get; set; }
        public string body { get; set; }
        public string sound { get; set; }
        public string badge { get; set; }
        [JsonProperty("content-available")]
        public string contentAvailable { get; set; }
    }

На момент написания этого кода я использовал старые WakefulBroadcastReceiver и IntentService в Android, которые больше не рекомендуются. Но если интересно, это выглядело как этот вопрос

EDIT: OP прокомментировал эту запись на github. Там описана та же проблема, которая до сих пор не устранена (сентябрь 2016). Обходные пути можно найти там, для IOS и Android нужно отправлять разные запросы.

person CularBytes    schedule 14.09.2016
comment
Я думаю, что нашел проблему для этой проблемы. Это связано с тем, что текущая реализация не позволяет отправлять сообщение, которое одновременно является отображаемым уведомлением для ios и тихим уведомлением для Android. ссылка: github.com/google/gcm/issues/63 Так что я думаю, что единственный возможным решением на данный момент является отправка различной полезной нагрузки между iOS и Android. - person nesniv; 15.09.2016