Show Menu
TÓPICOS×

Understanding push notifications payload structure

O Adobe Campaign permite enviar notificações por push personalizadas e segmentadas em dispositivos móveis iOS e Android para aplicativos móveis (aplicativo móvel).
Cada notificação por push recebida em um aplicativo móvel contém algumas informações que são usadas pelo aplicativo para exibir a notificação por push se uma notificação por push de alerta for enviada e provavelmente também fará mais alguma computação, especialmente se uma notificação por push silenciosa for enviada.
Essas informações são recebidas pelo código do aplicativo móvel em um manipulador de eventos que indica que uma notificação por push foi recebida. Ao enviar notificações por push do Adobe Campaign Standard, as informações recebidas no aplicativo móvel também podem conter informações específicas do Campaign Standard que podem ser usadas para aproveitar alguns recursos fornecidos pelo Campaign Standard. Além disso, a carga pode conter dados personalizados que podem ser consumidos pelo aplicativo móvel.
Este documento descreve a estrutura da carga recebida em um aplicativo móvel quando uma notificação por push é enviada com êxito para um aplicativo do Adobe Campaign Standard.
A estrutura de carga varia dependendo do tipo de aplicativo móvel (ou seja, aplicativo iOS, aplicativo Android habilitado para FCM).

Estrutura de carga de push

Esta seção detalha a estrutura de uma carga de amostra para várias plataformas móveis e descreve os principais atributos contidos nela. Esta é a estrutura da carga recebida no código do aplicativo móvel no manipulador de eventos que indica que uma notificação por push foi recebida.
Os atributos de carga e seus valores variam com base nas configurações fornecidas nas opções avançadas de notificação por push. Esta seção também fornece um mapeamento entre essas configurações na interface do usuário do Campaign Standard e os atributos na carga para esclarecer como a carga será alterada ao configurar uma opção no Campaign Standard.

Para aplicativos móveis iOS

Amostra de carga enviada do Adobe Campaign para o aplicativo iOS:
{

    "aps":{

            "alert":{

                    "body":"This is the content of my push notification",

                    "title":"Push Notification Title"

            },

            "content-available":1,

            "category":"NEW_MESSAGE_CATEGORY",

            "badge":2,

            "mutable-content":1,

            "sound":"default"

        },

    "custom_field1":"custom_value1",

    "custom_field2":"custom_value2",

    "media-attachment-url":"https://2.img-dpreview.com/files/p/articles/9440145363/Creative_Cloud.jpeg",

    "uri":"https://mydeeplinkurl.com",

    "_dId":"56c4",

    "_mId":"h138a"} 

Carga de amostra JSON a ser usada com o iOS APNS Tester
{

  "aps": {

    "alert": {

      "title": "Push Notification Title",

      "body": "body of push"

    },

    "badge": 33,

    "sound": "default"

  },

  "custom_field1": "custom_value1",

  "uri": "https://mydeeplinkurl.com"

}

A seção mais importante da carga é o dicionário aps, que contém as chaves definidas pela Apple e é usado para determinar como o sistema que recebe a notificação deve alertar o usuário, se for o caso. Esta seção contém chaves predefinidas que são usadas pelo aplicativo móvel para formular o comportamento da notificação por push.
Detalhes aprofundados sobre os atributos no aplicativo podem ser encontrados em documentos do desenvolvedor da Apple: Criando a carga de notificação remota.

Para aplicativo Android

Amostra de envio de carga do Adobe Campaign para o aplicativo Android
{

  "collapseKey": "1476005",

  "priority": "high",

  "data": {

    "_dId": "d57fd6",

    "_mId": "h1685a5",

    "body": "adobe body 123",

    "category": "adobe category 123",

    "custom key 1": "value 1",

    "custom key 2": "test value 2",

    "custom key 3": "foo bar android",

    "media-attachment-url": "http://adobegiphy.com?test=123",

    "sound": "http://testcampaign.instance.com/r/?id=s1685a5,d57fd6,d57ff5",

    "title": "adobe title 123",

    "uri": "http://testcampaign.instance.com/r/?id=d1685a5,d57fd6,d57ff6",

    "badge": 1817

  }

}

Carga de amostra JSON para usar o testador do Google FCM
{

  "to": "<==========ENTER your device token==============>",

  "collapseKey": "1476005",

  "priority": "high",

  "data": {

    "_dId": "d57fd6",

    "_mId": "h1685a5",

    "title": "adobe title 123",

    "body": "adobe body 123",

    "category": "adobe category 123",

    "custom key 1": "value 1",

    "custom key 2": "test value 2",

    "custom key 3": "foo bar android",

    "media-attachment-url": "http://adobegiphy.com?test=123",

    "sound": "http://testcampaign.instance.com/r/?id=s1685a5,d57fd6,d57ff5",

    "uri": "http://testcampaign.instance.com/r/?id=d1685a5,d57fd6,d57ff6",

    "badge": 1817

  }

}

A carga contém uma mensagem de dados que inclui todo o conteúdo do delivery de notificação por push, incluindo os pares de chave/valor personalizados, e o aplicativo cliente deve manipular a mensagem para criar e mostrar a notificação por push, se necessário, ou então adicionar qualquer outra lógica comercial.
Para entender os aspectos de uma carga do Android, consulte Conceitos e opções de mensagens (fcm) .
O suporte para mensagens de notificação na carga do Android foi removido a partir de janeiro de 2018 para permitir a ativação do aplicativo e a transmissão do controle para o aplicativo móvel sem a necessidade de interação do usuário com o aplicativo.

Mapeamento entre configurações de Campaign Standard e atributos de carga

Configuração da Campanha
Atributo afetado no iOS
Atributo afetado no Android
Descrição
Título da mensagem Corpo
da mensagem
alerta → alerta de título
→ corpo
título
de corpo
Esses dados contêm detalhes específicos da mensagem de alerta.
O título e as chaves de corpo fornecem o conteúdo do alerta.
Reproduzir um som
som
som
Um som personalizado para reproduzir com o alerta.
Valor do crachá
emblema
emblema
Um valor inteiro a ser usado para marcar o ícone do aplicativo.
Adicionar um deep link
uri
NA
Um deep link permite que você traga os usuários diretamente para o conteúdo localizado dentro do aplicativo (em vez de abrir uma página do navegador da Web).
Categoria
categoria
categoria
Para exibir ações personalizadas com uma notificação remota.
A tecla categoria ajuda o sistema a exibir as ações para essa categoria como botões na interface de alerta.
Campos personalizados
custom_field1, custom_field2 ...
custom_field1, custom_field2 ...
Todos os dados personalizados que você deseja enviar ao seu aplicativo.
URL de conteúdo de mídia avançada (arquivos de imagem, gif, áudio e vídeo)
(aplicável somente para iOS 10 ou superior)
media-attachment-url
NA
URL dos arquivos de mídia para adicionar conteúdo avançado à sua notificação.
Ao fornecer um valor para esse URL, o sinalizador de conteúdo mutável é enviado automaticamente para a carga.
(Aplicável somente para iOS 10 ou superior)
Conteúdo variável
(aplicável somente para iOS 10 ou superior)
mutable-content
NA
A extensão do serviço de notificação no aplicativo interceptará todas as notificações remotas com a chave de conteúdo mutável e permitirá que você manipule/manipule o conteúdo da carga da solicitação, que pode ser usada para personalizar a notificação. Os casos de uso desse recurso incluem baixar e exibir várias mídias, descriptografando quaisquer dados criptografados presentes na carga de push. Mais informações podem ser encontradas em Modificar a carga de uma Notificação Remota.
(Aplicável somente para iOS 10 ou superior)
Conteúdo disponível
conteúdo disponível
NA
Selecionar essa opção ativa a ativação de um aplicativo iOS enquanto ele estiver em segundo plano/suspenso. A ativação implica que o aplicativo seja executado em segundo plano e o manipulador de eventos apropriado responsável por receber a carga de dados da notificação por push obtenha um controle e possa usar os dados para fazer qualquer cálculo, incluindo, mas não limitado a, criar notificação por push personalizada e exibir o mesmo. Mais informações podem ser encontradas no aplicativo de ativação com delivery de notificação.
URL de conteúdo de mídia avançada (arquivos de imagem)
(aplicável somente para Android)
NA
media-attachment-url
URL dos arquivos de imagem para adicionar conteúdo avançado à sua notificação.
NA
_mId
_dId
_mId
_dId
Valores de BroadlogId e deliveryId.
Esses atributos são necessários se o aplicativo desejar chamar um postback de rastreamento para rastrear quando a notificação por push foi clicada/aberta. Essas informações são computadas e enviadas internamente pelo servidor do aplicativo sem a intervenção do usuário.
Informações sobre postbacks podem ser encontradas nesta página .

Como recuperar informações de carga no código do aplicativo móvel

As informações de carga enviadas pelo servidor do aplicativo são recebidas pelo código do aplicativo móvel em um manipulador de eventos que indica que uma notificação por push foi recebida. Esse evento varia com base na plataforma móvel em que o aplicativo está sendo executado e também se baseia em se o aplicativo está sendo executado em primeiro ou segundo plano. A documentação a seguir o ajudará a identificar o manipulador de eventos que você deseja manipular com base no caso de uso.
Amostra para o aplicativo móvel iOS
 - (void)application:(UIApplication *)application

didReceiveRemoteNotification:(NSDictionary *)userInfo {

    

    NSDictionary *apsDict = [userInfo objectForKey:@"aps"];

    NSDictionary *alertDict = [apsDict objectForKey:@"alert"];

    NSString *title = [alertDict objectForKey:@"title"];

    NSString *body = [alertDict objectForKey:@"body"];

    NSString *category = [apsDict objectForKey:@"category"];

    NSString *deliveryId = userInfo[@"_dId"];

    NSString *broadlogId = userInfo[@"_mId"];

    NSString *mediaAttachmentURL = userInfo[@"media-attachment-url"];

    NSString *deeplinkURL = userInfo[@"uri"];

    NSString *customValue1 = userInfo[@"custom_field1"];   

}

Amostra para o aplicativo FCM do Android Mobile
public void onMessageReceived(RemoteMessage message) {

    Map<String, String> dataMap = message.getData();

     

    String title = dataMap.get("title");

    String body = dataMap.get("body");

    String category = dataMap.get("category");

    String deliveryId = dataMap.get("_dId");

    String broadlogId = dataMap.get("_mId");

    String mediaAttachmentURL = dataMap.get("media-attachment-url");

    String deeplinkURL = dataMap.get("uri");

    String customValue1 = dataMap.get("custom_field1");

}