Guia Técnico de Implementação
Formato dos dados
Mensagens nativas precisam ser compreendidas pelo aplicativo móvel ou web, então é importante definir primeiro o formato dos dados. Qualquer atualização no estilo ou nas opções de conteúdo das mensagens nativas vai exigir uma atualização do app/site.
O formato dos dados depende totalmente do cliente, mas um exemplo típico seria:
{
"type": "announcement",
"title": "Free 10 EUR bet",
"text": "Participate and earn a free 10 EUR bet",
"icon": "bet",
"style": {
"color": "red"
}
}Campo tipo
Recomendamos introduzir um campo como tipo para poder adicionar mais tipos de mensagens no futuro, se necessário.
Integração com Android
## Implementar a nova Interface NativeInAppListener
public class YOUR_APPLICATION extends Application implements NativeInappListenerAdicionar a referência à pushConnector.builder configuração
new PushConnector.Builder(XPUSH_APP_KEY, GOOGLE_PROJECT_NUMBER)
.setNativeInappListener(this)
.create(this)Implemente um manipulador nativo de mensagens dentro do app
É aí que você deve analisar os dados e construir seu elemento nativo de mensagem dentro do app. Note que você pode apresentar a mensagem ao usuário imediatamente, ou armazená-la até que o usuário navegue até uma determinada seção do app onde a mensagem deve ser apresentada (veja a seção de disparos e posicionamento para mais detalhes).
@Override
public void nativeInappReceived(Message xpMessage) {
// called when message received from the server
}Seus dados personalizados virão na inapp_data carga útil como uma string JSON. Aqui está um exemplo de acesso e análise dos dados:
String data = xpMessage.data.get("inapp_data");
// Parse JSON exampleReporte uma entrega quando uma mensagem do Android for apresentada a um usuário
Quando uma mensagem é apresentada ao usuário, recomendamos rastreá-la com a plataforma Xtremepush para que você possa acompanhar quantas vezes as mensagens apareceram nas análises.
mPushConnector.reportMessageDelivered(xpMessage);Nota sobre pré-carregamento de conteúdo
Esse método não precisa ser chamado imediatamente após receber uma mensagem no handler. É uma abordagem comum pré-carregar a lista de mensagens dentro do app no início do aplicativo e só reportar a entrega quando o usuário navega até uma determinada seção do app e a mensagem finalmente é apresentada.
Reporte um clique quando um usuário interagir com uma mensagem do Android
mPushConnector.reportMessageClicked(xpMessage, null);Caso a mensagem permita múltiplas ações diferentes - você pode especificar qual foi tomada passando um ID de botão / ID de ação como segundo parâmetro:
mPushConnector.reportMessageClicked(xpMessage, "accept");Integração com iOS
## Implementar um manipulador de mensagens nativo no aplicativo
É aqui que você deve analisar os dados e construir seu elemento nativo de mensagem no app. Note que você pode apresentar a mensagem ao usuário imediatamente, ou armazená-la até que o usuário navegue até uma determinada seção do app onde a mensagem deve ser apresentada (veja a seção de disparos e posicionamento para mais detalhes).
XPush.registerNativeMessageHandler { [weak self] message in
// called when message received from the server
}Seus dados personalizados virão na inapp_data carga útil como uma string JSON. Aqui está um exemplo de acesso e análise dos dados:
let data = message.payload["inapp_data"] as? String
// Parse JSON from dataReporte uma entrega quando uma mensagem iOS for apresentada a um usuário
Quando uma mensagem é apresentada ao usuário, recomendamos rastreá-la com a plataforma Xtremepush para que você possa acompanhar quantas vezes as mensagens apareceram nas análises.
XPush.reportMessageDelivered(message)Nota sobre pré-carregamento de conteúdo
Esse método não precisa ser chamado imediatamente após receber uma mensagem no handler. É uma abordagem comum pré-carregar a lista de mensagens dentro do app no início do aplicativo e só reportar a entrega quando o usuário navega até uma determinada seção do app e a mensagem finalmente é apresentada.
Reporte um clique quando um usuário interagir com uma mensagem do iOS
XPush.reportMessageClicked(message)Caso a mensagem permita múltiplas ações diferentes - você pode especificar qual foi tomada passando um ID de botão / ID de ação como segundo parâmetro:
XPush.reportMessageClicked(message, "accept")Integração web
Com a função em native_onsite, a sintaxe para interceptar o conteúdo e fazer algo com ele é a seguinte:
xtremepush('on','native_onsite', function(data) {
console.log('your data is');
alert(JSON.stringify(data));
});Essa função retorna o objeto de dados com os parâmetros que você forneceu dentro da mensagem nativa, como parâmetros RAW ou JSON.
Você precisará usar a função/método JSON.stringify para converter os dados retornados em String e, uma vez executado, o usuário final poderá lidar com a mensagem como esperado.
Por exemplo, se você estiver passando pares chave/valor como "apples":"oranges", então isso será retornado - e dentro da função xpush na native_onsite, você pode modificá-lo para incluir, por exemplo, o conteúdo dos pares chave/valor, como:
if(JSON.stringify(data).contains('apples')){
console.log('this user is interested in apples');
}Reporte uma entrega quando uma mensagem web é exibida a um usuário
//mark message delivered
xtremepush('message', 'delivered', action_id, context);
e.g.
xtremepush('message', 'delivered', '12', {"apples":"oranges"});Reporte um clique quando um usuário interage com uma mensagem da web
//mark message opened
xtremepush('message', 'opened', action_id, 'context');
e.g.
xtremepush('message', 'opened', '12', {"apples":"oranges"})Disparo e posicionamento
Existem duas maneiras pelas quais mensagens nativas podem ser acionadas e apresentadas:
Carregue todas as mensagens no app aberto (usando Session_Start Evento) e apresente quando necessário.
Carregue mensagens para telas individuais de aplicativos ou web enquanto o usuário navega entre elas (usando eventos personalizados) e apresentadas imediatamente após o recebimento.
Normalmente recomendamos seguir a primeira abordagem, se possível, pois isso significa que:
As mensagens poderiam ser apresentadas instantaneamente quando o usuário navega (porque já estão armazenadas no lado do app e não há necessidade de carregá-las pelo servidor).
Menos eventos são necessários (um único evento de início de sessão é suficiente para carregar todas as mensagens).
Introduza um campo de posicionamento no seu formato de dados
Comunicação com o profissional de marketing
As informações a seguir devem ser comunicadas ao seu profissional de marketing, que precisará garantir que inclua quaisquer valores esperados na configuração da campanha. Mais detalhes sobre a configuração podem ser encontrados no guia do usuário, na seção Campanha de conteúdo inline nativo no aplicativo.
Este campo será usado para indicar ao aplicativo onde apresentar a mensagem.
Por exemplo, você poderia ter um campo simples na tela:
{
"type": "announcement",
"title": "Free 10 EUR bet",
"text": "Participate and earn a free 10 EUR bet",
"icon":" bet",
"style": {
"color": "red"
},
"screen": "football"
}Ou você pode ter uma versão mais complexa, com múltiplas colocações, se necessário:
{
"type": "announcement",
"title": "Free 10 EUR bet",
"text": "Participate and earn a free 10 EUR bet",
"icon": "bet",
"style": {
"color": "red"
},
"placements": [
{
"screen": "scores",
"sport": "football"
},
{
"screen": "favourites"
}
]
}Gerencie diferentes opções de posicionamento no app
Cabe ao cliente decidir o formato dos campos de colocação, mas aplicativos móveis precisam saber como lidar com todos esses casos.
Após receber uma mensagem no handler nativo do app, ela deve ser armazenada dentro do aplicativo e apresentada ao usuário sempre que ele navegar para uma determinada tela.
Estatísticas da campanha
Uma vez apresentada a mensagem, ela deve ser reportada como entregue usando reportMessageDelivery o método descrito na seção acima.
As diferentes estatísticas que acompanhamos para que você entenda o desempenho das mensagens dentro do app:
Enviado: número de mensagens enviadas da plataforma para o dispositivo na função de handler personalizado
Entregue: número de mensagens realmente mostradas ao usuário (é importante ter o método reportMessageDelivery chamado no app)
Clicado: número de mensagens clicadas pelo usuário (é importante que
reportMessageClicko método seja chamado no app)Taxa de Cliques: número de mensagens clicadas versus número de mensagens entregues