Нужен ли словарь aps для уведомлений iOS? Можем ли мы иметь одинаковую полезную нагрузку для iOS и Android?

Я только начал работать над уведомлениями на iOS, и кажется, что Apple определила формат для полезной нагрузки для получения уведомлений.

Так что в настоящее время я использую эту полезную нагрузку, и все работает, как ожидалось. Я получаю заголовок, субтитры, звук тела, изображение.

{"aps" : {
        "alert" : {
            "title" : "Introduction To Notification",
            "subtitle" : "Session 707",
            "body" : "New Notification Look Amazing"
        },
       "sound" : "default",
        "category" : "message",
        "badge" : 1,
        "mutable-content": 1
    },
    "attachment-url": "https://pusher.com/static_logos/320x320.png"
}

Допустим, я хочу иметь одну полезную нагрузку для Android и iOS.

Есть ли в Android стандартный формат для уведомлений или вы можете установить какие-либо данные в Android, и клиент должен вручную обрабатывать и отображать эти уведомления?

Как я могу создать полезную нагрузку, которая работает для обоих?

2 ответа

Решение

Обновление межплатформенных полезных нагрузок. Недавно добавлена ​​функция FCM, которая дает возможность предоставлять конкретные параметры для конкретных платформ, называемые переопределениями платформ.


Представленная вами полезная нагрузка соответствует официальным параметрам APN. При использовании GCM или FCM параметры, которые будут использоваться, отличаются (см. Ссылки).

Есть ли в Android стандартный формат для уведомлений или вы можете установить какие-либо данные в Android, и клиент должен вручную обрабатывать и отображать эти уведомления?

Это зависит от того, какой тип сообщения вы планируете использовать. Есть 2 типа сообщений для GCM/FCM, notification а также data,

notification сообщения имеют только предопределенный набор доступных параметров, в то время как data сообщения могут быть использованы для создания пользовательских пар ключ-значение. Оба обычно обрабатываются клиентом, но обратите внимание, что поведение для Android и iOS различается в зависимости от типа используемого вами сообщения (см. Ссылки).

Как я могу создать полезную нагрузку, которая работает для обоих?

Как я уже упоминал в разделе комментариев в другом посте:

Вы должны будете сделать сопоставление на своей собственной базе данных / сервере приложений. Да. Я думал, что каждый раз, когда маркер регистрации генерируется на стороне клиентского приложения, вы отправляете его на сервер базы данных / приложения по типу устройства (т. Е. "Android", "iOS"). Чтобы при отправке сообщений вам сначала нужно было проверить тип устройства. Я сказал, что это больше работы, но это верный способ дать вам контроль над вещами. AFAIK, разработчик несет ответственность за отслеживание регистрационных токенов и любых деталей, которые должны быть связаны с ним.

Вы не можете помещать пользовательские теги в теги aps. Вот что говорит об этом документация:

Поставщики могут указывать пользовательские значения полезной нагрузки вне зарезервированного Apple пространства имен aps. В пользовательских значениях должны использоваться структурированные и примитивные типы JSON: словарь (объект), массив, строка, число и логическое значение. Так что в вашем случае вы должны сделать что-то вроде:

{
    "aps": {
        "alert": "Hello World",
        "sound": "default"
    },
    "Person": {
        "Address": "Your address",
        "Name": "Your Name",
        "Number": "XXXXXXXXXX"
    }
}

Поэтому вы можете прочитать свою пользовательскую полезную нагрузку, посмотрев ее ключ в основном JSON, а не в "aps":