Структура уведомления

Структура полного уведомления

public class RemoteMessage  {
 
    public string collapseKey;
    public Dictionary<stringstring> data;
    public string messageId;
    public Notification notification;
    public int priority;
    public sbyte[] rawData;
    public int ttl;
}
  • messageId  уникальный ID сообщения. Является идентификатором каждого сообщения. 
  • priority  (на данный момент не учитывается) возвращает значение приоритетности. Сейчас заложены следующие варианты: 
    • 0  UNKNOWN. 
    • 1  HIGH. 
    • 2  NORMAL. 
  • ttl  время жизни push-уведомления типа Int в секундах. 
  • collapseKey  (на данный момент не учитывается) идентификатор группы уведомлений. 
  • data  словарь, в который можно передать дополнительные данные для уведомления. 
  • rawData  словарь data в виде массива байтов. 
  • notification — объект уведомления. 
public class Notification {
 
    public string title;
    public string body;
    public string channelId;
    public string imageUrl;
    public string color;
    public string icon;
    public string clickAction;
}
  • title  заголовок уведомления; 
  • body  тело уведомления;
  • channelId  возможность задать канал, в который будет отправлено уведомление (актуально для Android 8.0 и выше);
  • imageUrl  прямая ссылка на изображение для вставки в уведомление (изображение должно быть не более 1 МБ); 
  • color  цвет уведомления (Notification.color). Цвет необходимо передать в hex-формате, строкой (Пример: “#A52A2A”);
  • icon  иконка уведомления. Иконка должна лежать в ресурсах приложения (res/drawable). Значение параметра  строка, которая совпадает с названием ресурса; 
    • Пример: в res/drawable лежит иконка small_icon.xml, которая в коде доступна через R.drawable.small_icon. Для отображения данной иконки в уведомлении сервер должен поместить в параметр “icon” значение “small_icon”. 
  • clickAction  intent action, с помощью которого будет открыта активити при клике на уведомление. 

Создание канала для отправки уведомления

Для канала, в который будет отправлено уведомление действует следующий порядок приоритета:

1. Если в push-уведомлении есть поле channelId, то SDK отправит уведомление в данный канал. При этом ваше приложение ответственно за то, чтобы создать этот канал заранее.

2. Если поля channelId нет в пуш-уведомлении, но ваше приложение указало параметр с каналом в AndroidManifest.xml, то будет использован канал из AndroidManifest.xml. Ваше приложение ответственно за создание канала. 

3. Если поля channelId нет в пуш-уведомлении, и канал по умолчанию не задан в AndroidManifest.xml вашего приложения, то SDK самостоятельно создаст канал и отправит в него уведомление. В дальнейшем все уведомления без заданного канала будут отправляться в этот канал.

Открытие Activity при тапе на уведомление

По умолчанию, при тапе на уведомление SDK открывает активити с action “android.intent.action.MAIN”. Если поле clickAction присутствует, то SDK откроет активити, которая попадает под Intent filter с указанным action.

Чтобы SDK мог открыть активити при тапе на уведомление (это относится и к активити по-умолчанию), в манифесте приложения, в соответствующем элементе <intent-filter> у активити необходимо добавить строку <category android:name=“android.intent.category.DEFAULT” />. Без этой строчки открыть активити SDK не сможет.

Обновлено 14 августа 2023 г.
Was this information helpful?