Acompanhamento de eventos in-app
Acompanhe os eventos in-app para analisar o desempenho da campanha e medir os principais indicadores de desempenho (KPIs), como logins de utilizadores, registos, conclusões de tutoriais ou marcos de progressão.
Eventos e atributos padrão
Uso de eventos padrão
O Singular oferece suporte a eventos padrãoque são reconhecidos pelas redes de anúncios para geração de relatórios e otimização. Use nomes de eventos padrão sempre que possível para reconhecimento automático e configuração simplificada.
A sua equipa de UA, de marketing ou de negócios deve compilar a lista de eventos com base nos KPIs de marketing da sua organização. Consulte o guia Como rastrear eventos no aplicativo: Guia para Clientes de Atribuição Singularpara planeamento.
Cada evento suporta vários atributos. Consulte os atributos padrão recomendados por eventopara obter detalhes de implementação.
Envio de eventos
Diretrizes de implementação de eventos
Envie eventos para a Singular usando os métodos eventJSON ou event (recomendamos eventJSON para melhorar a legibilidade).
-
Eventos padrão: Use o nome Android do eventoda lista de eventos padrão, por exemplo,
sngTutorialComplete - Eventos personalizados: Para eventos exclusivos da sua aplicação que não correspondam aos eventos padrão, utilize qualquer cadeia descritiva que esteja em conformidade com as limitações de caracteres
Limitações de eventos personalizados:
- Idioma: Transmita nomes e atributos de eventos em inglês para garantir a compatibilidade com parceiros de terceiros e soluções de análise
- Nomes de eventos: Limitado a 32 caracteres ASCII. As cadeias de caracteres não ASCII devem ter menos de 32 bytes quando convertidas para UTF-8
- Atributos e valores: Limitado a 500 caracteres ASCII
Método eventJSON
Reportar eventos de utilizador com informações adicionais utilizando o formato JSONObject para dados estruturados.
Assinatura do método:
Singular.eventJSON(String name, JSONObject args)
Nota: O parâmetro args é um JSONObject que contém um ou mais pares de valores chave. As chaves devem ser cadeias de caracteres e os valores podem ser de qualquer tipo permitido como um valor JSONObject.
Exemplos de utilização
// Example 1: Standard event with recommended attributes
val att = JSONObject().apply {
put(Attributes.sngAttrContent.toString(), "Telugu")
put(Attributes.sngAttrContentId.toString(), 32)
put(Attributes.sngAttrContentType.toString(), "video")
put(Attributes.sngAttrSuccess.toString(), 75)
}
Singular.eventJSON(Events.sngTutorialComplete.toString(), att)
// Example 2: Custom event with custom attributes
val att = JSONObject().apply {
put("Points", 500)
put("score", 650)
}
Singular.eventJSON("Bonus Points Earned", att)
// Example 1: Standard event with recommended attributes
JSONObject att = new JSONObject();
try {
att.put(Attributes.sngAttrContent.toString(), "Telugu");
att.put(Attributes.sngAttrContentId.toString(), 32);
att.put(Attributes.sngAttrContentType.toString(), "video");
att.put(Attributes.sngAttrSuccess.toString(), 92);
} catch (JSONException e) {
e.printStackTrace();
}
Singular.eventJSON(Events.sngTutorialComplete.toString(), att);
// Example 2: Custom event with custom attributes
JSONObject att = new JSONObject();
try {
att.put("Points", 500);
att.put("score", 650);
} catch (JSONException e) {
e.printStackTrace();
}
Singular.eventJSON("Bonus Points Earned", att);
event Método
Relata eventos do utilizador com ou sem informações adicionais utilizando argumentos variáveis.
Assinaturas de método:
Singular.event(String eventName)
Singular.event(String eventName, Object... args)
Nota: O parâmetro args aceita um ou mais pares de valores chave. As chaves devem ser cadeias de caracteres e os valores podem ser de qualquer tipo permitido como um valor JSONObject (JSONObject, JSONArray, String, Boolean, Integer, Long, Double ou NULL). A lista args deve conter um número par de elementos ou o evento será rejeitado.
Exemplos de uso
// Example 1: Standard event without attributes
Singular.event(Events.sngSubscribe.toString())
// Example 2: Standard event with recommended attributes
Singular.event(Events.sngTutorialComplete.toString(),
Attributes.sngAttrContent.toString(), "Telugu",
Attributes.sngAttrContentId.toString(), "32",
Attributes.sngAttrContentType.toString(), "video",
Attributes.sngAttrSuccess.toString(), "yes"
)
// Example 3: Custom event without attributes
Singular.event("SignUp")
// Example 4: Custom event with custom attribute
Singular.event("Bonus Points Earned", "Points", 500)
// Example 1: Standard event without attributes
Singular.event(Events.sngSubscribe.toString());
// Example 2: Standard event with recommended attributes
Singular.event(Events.sngTutorialComplete.toString(),
Attributes.sngAttrContent.toString(), "Spanish",
Attributes.sngAttrContentId.toString(), 52,
Attributes.sngAttrContentType.toString(), "video",
Attributes.sngAttrSuccess.toString(), 46
);
// Example 3: Custom event without attributes
Singular.event("SignUp");
// Example 4: Custom event with custom attribute
Singular.event("Bonus Points Earned", "Points", 500);
Acompanhamento de receitas na aplicação
Acompanhe a receita de compras no aplicativo (IAP), assinaturas e fontes de receita personalizadas para medir o desempenho da campanha e o retorno sobre o gasto com anúncios (ROAS).
Os dados de receita fluem através de três canais:
- Relatórios interactivos: Visualizar métricas de receita no painel do Singular
- Registos de exportação: Aceder a dados ETL detalhados para análise personalizada
- Postbacks em tempo real: Enviar eventos de receita para plataformas externas
Limitações de eventos de receita:
- Nomes de eventos: Os nomes personalizados de eventos de receita são limitados a 32 caracteres ASCII (ou 32 bytes para não-ASCII quando convertidos para UTF-8)
- Atributos: Os nomes e valores dos atributos do evento estão limitados a 500 caracteres ASCII
- Códigos de moeda: Devem estar em MAIÚSCULAS e seguir a norma ISO 4217de três letras (por exemplo, USD, EUR, INR)
Melhores práticas
- Nomenclatura padrão: Utilizar a convenção de nomenclatura de eventos e atributos padrãoda Singular
- Idioma: Envie nomes de eventos de receita personalizados em inglês para melhorar a compatibilidade de postback da rede de anúncios
- Valores diferentes de zero: Envie eventos de receita apenas quando o valor for maior ou menor que 0
Compra no aplicativo sem assinatura
Integração do objeto de compra
Passe o objeto Purchaseda Biblioteca de faturação do Google para os métodos revenue ou customRevenue para obter relatórios enriquecidos e validação de transacções.
Vantagens:
- Dados avançados: O Singular recebe detalhes completos da transação para relatórios abrangentes
- Prevenção de fraudes: Os recibos de transação permitem a validação para combater a fraude in-app
Observações:
-
Nomes de eventos personalizados: O método
customRevenueaceita nomes de eventos personalizados para dividir a receita por tipo de evento em relatórios - Conversão de moeda: A receita em diferentes moedas é automaticamente convertida para a moeda preferida da sua organização
Método de receita com Purchase
Enviar um evento de receita com o objeto Purchase para validação automática e dados enriquecidos.
Assinatura do método:
Singular.revenue(String currency, double amount, Object purchase)
Exemplo de utilização
Singular.revenue("USD", 5.50, purchase)
Singular.revenue("USD", 5.50, purchase);
customRevenue Método com Purchase
Envia um evento de receita com um nome personalizado e o objeto Purchase para um acompanhamento categorizado das receitas.
Assinatura do método:
Singular.customRevenue(String eventName, String currency, double amount, Object purchase)
Exemplo de utilização
Singular.customRevenue("MyCustomRevenue", "USD", 5.50, purchase)
Singular.customRevenue("MyCustomRevenue", "USD", 5.50, purchase);
Receita de assinatura
Implementação do evento de assinatura
Acompanhe as compras e renovações de subscrições para obter informações sobre o comportamento do utilizador e a geração de receitas recorrentes.
Guia de implementação: Consulte o abrangente Guia de Implementação Técnica de Eventos de Assinaturapara obter instruções detalhadas sobre como rastrear assinaturas com o SDK Singular.
Receita personalizada sem validação de compra
Rastreamento manual de receita
Rastreie a receita passando a moeda, o valor e os detalhes opcionais do produto sem o objeto Purchase. Observe que esse método não fornece recibos de transação para validação.
Importante: Ao usar esses métodos, o Singular não pode validar transações. É altamente recomendável usar os métodos do objeto Purchase descritos acima sempre que possível.
Método de receita sem compra
Envia eventos de receita com moeda, valor e detalhes opcionais do produto.
Assinaturas de métodos:
Singular.revenue(String currency, double amount)
Singular.revenue(String currency, double amount, String productSKU, String productName, String productCategory, int productQuantity, double productPrice)
Singular.revenue(String currency, double amount, Map<String, Object> attributes)
Exemplos de uso
// Without product details
Singular.revenue("USD", 5.50)
// With product details
Singular.revenue("EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee", 1, 5.00)
// With product details in an attribute map
val attributes = mutableMapOf<String, Any>().apply {
put("product_id", "com.app.premium")
put("transaction_id", "T12345")
put("quantity", 1)
put("is_trial", false)
}
Singular.revenue("USD", 9.99, attributes)
// Without product details
Singular.revenue("USD", 5.50);
// With product details
Singular.revenue("EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee", 1, 5.00);
// With product details in an attribute map
Map<String, Object> attributes = new HashMap<>();
attributes.put("product_id", "com.app.premium");
attributes.put("transaction_id", "T12345");
attributes.put("quantity", 1);
attributes.put("is_trial", false);
Singular.revenue("USD", 9.99, attributes);
customRevenue Método sem Purchase
Envia eventos de receita personalizados com um nome de evento especificado, moeda, montante e atributos de transação opcionais.
Assinaturas do método:
Singular.customRevenue(String eventName, String currency, double amount)
Singular.customRevenue(String eventName, String currency, double amount, String productSKU, String productName, String productCategory, int productQuantity, double productPrice)
Singular.customRevenue(String eventName, String currency, double amount, Map<String, Object> attributes)
Exemplos de uso
// Without product details
Singular.customRevenue("MyCustomRevenue", "USD", 5.50)
// With product details
Singular.customRevenue("MyCustomRevenue", "EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee", 1, 5.00)
// With product details in an attribute map
val attributes = mutableMapOf<String, Any>().apply {
put("product_id", "com.app.premium")
put("transaction_id", "T12345")
put("quantity", 1)
put("is_trial", false)
}
Singular.customRevenue("MyCustomRevenue", "USD", 9.99, attributes)
// Without product details
Singular.customRevenue("MyCustomRevenue", "USD", 5.50);
// With product details
Singular.customRevenue("MyCustomRevenue", "EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee", 1, 5.00);
// With product details in an attribute map
Map<String, Object> attributes = new HashMap<>();
attributes.put("product_id", "com.app.premium");
attributes.put("transaction_id", "T12345");
attributes.put("quantity", 1);
attributes.put("is_trial", false);
Singular.customRevenue("MyCustomRevenue", "USD", 9.99, attributes);
Rastreamento de evento híbrido (avançado)
Envie todos os eventos e receitas através do Singular SDK integrado em seu aplicativo para uma atribuição ideal. No entanto, a Singular pode coletar eventos de outras fontes quando necessário.
Os eventos enviados fora do Singular SDK devem estar em conformidade com a documentação de eventos de servidor para servidordo Singular e fornecer identificadores de dispositivo correspondentes para atribuição correta.
Importante:
Ocorrem discrepâncias quando os identificadores de dispositivos em solicitações de servidor para servidor não correspondem aos identificadores registrados pelo SDK da Singular:
- Eventos antecipados: Se um evento chegar antes de o Singular SDK registar o identificador do dispositivo, o evento torna-se a "primeira sessão" de um dispositivo desconhecido, resultando numa atribuição orgânica
- Identificadores incompatíveis: Se o Singular SDK registar um identificador de dispositivo diferente do que consta do pedido de servidor para servidor, o evento será atribuído incorretamente
Guias de rastreamento de eventos híbridos
Envio de eventos de um servidor interno
Colete dados de receita do seu servidor interno para analisar o desempenho da campanha e o ROI.
Requisitos:
- Capturar identificadores de dispositivo: Durante os eventos de registo ou início de sessão in-app, capture e passe identificadores de dispositivo e, em seguida, armazene estes dados com o ID de utilizador no seu servidor. Atualize os identificadores quando os usuários gerarem novas sessões de aplicativo para garantir a atribuição correta
- Identificadores específicos da plataforma: Envie eventos do lado do servidor com o identificador de dispositivo correspondente à plataforma (por exemplo, IDFA ou IDFV para dispositivos iOS)
- Actualizações em tempo real: Utilize o mecanismo de postback do BI interno da Singular para enviar eventos em tempo real para o ponto de extremidade. Consulte as Perguntas frequentes sobre postback do BI interno
- Detalhes de implementação: Reveja a secção "Tracking Revenue"no guia de Integração Servidor a Servidor
Envio de eventos de um fornecedor de receitas
Integre provedores de receita de terceiros como RevenueCat ou adapty para enviar receitas de compras e assinaturas para a Singular.
Provedores suportados:
- RevenueCat: Saiba mais na documentação do RevenueCat
- adapty: Saiba mais na documentação do adapty
Envio de eventos do Segment
Habilite o Segment para enviar eventos para a Singular em paralelo com o SDK da Singular adicionando um destino "Modo nuvem" no Segment.
Siga o guia de implementação Integração Singular-Segmentpara obter instruções detalhadas de configuração.