Acompanhamento de eventos in-app
Nota: Para obter detalhes sobre o planejamento de eventos de usuário, consulte O aplicativo rastreará eventos de usuário? no guia Planejamento e pré-requisitos do SDK.
Nota: Recomendamos o envio de todos os eventos in-app para o servidor Singular usando métodos do SDK Singular em seu aplicativo. Se você planeja enviar eventos para a Singular de outro provedor ou de um servidor interno, consulte a seção Rastreamento de eventos híbridos abaixo.
Rastreamento de eventos (sem receita)
A Singular pode coletar dados sobre eventos in-app para ajudar a analisar o desempenho de suas campanhas e medir KPIs. Por exemplo, sua organização pode querer coletar dados sobre logins de usuários, registros, conclusões de tutoriais ou subida de nível em um aplicativo de jogos.
A lista de eventos enviados para o Singular (com os atributos que os acompanham) deve ser compilada pela equipa de UA/marketing/negócios com base nos seus KPIs de Marketing.
Para obter mais detalhes sobre o planejamento de eventos de usuário, consulte O aplicativo rastreará eventos de usuário? no guia Planejamento e pré-requisitos do SDK.
No seu código, envie eventos padrão para o Singular usando os métodos event ou eventWithArgs.
Observação: para eventos padrão, use o nome iOS do evento como ele aparece na Lista de eventos e atributos padrão do SDK do iOS, por exemplo, EVENT_SNG_LOGIN.
Para eventos personalizados, eventos que sua organização deseja medir e que não correspondem a nenhum dos eventos padrão da Singular, use qualquer nome personalizado (máximo de 32 caracteres). Recomendamos o uso de nomes em inglês para compatibilidade com quaisquer parceiros de rede de anúncios que possam receber o evento da Singular para fins de otimização.
evento Método | |
---|---|
Descrição | Envia um evento de usuário para a Singular para rastreamento. |
Assinatura | (void)event:(NSString *)name |
Exemplo de uso |
|
Método eventWithArgs | |
Descrição | Envia um evento de utilizador para a Singular para rastreio, com informações adicionais. |
Assinatura | (void)eventWithArgs:(NSString *)name, ... |
Exemplo de uso |
|
Rastreamento de receita in-app
A Singular captura eventos de receita de compras in-app (IAP), assinaturas e receita personalizada para medir o desempenho da campanha e o retorno sobre o gasto com anúncios (ROAS). Os dados de receita ficam disponíveis por meio de três canais principais:
- Relatórios interactivos no dashboard Singular
- Registos de exportação detalhados e destinos de dados ETL para análise personalizada
- Postbacks em tempo real para plataformas externas
Este acompanhamento abrangente das receitas permite tomar decisões baseadas em dados sobre os gastos de marketing e a otimização das campanhas, proporcionando flexibilidade na forma como os dados são consumidos e analisados.
Requisitos
- Se forem utilizados nomes personalizados de eventos de receitas, os nomes personalizados de eventos de receitas estão limitados a 32 caracteres ASCII. Para caracteres não-ASCII, o limite é de 32 bytes depois de convertidos para UTF-8.
- Os nomes e valores de atributos de eventos estão limitados a 500 caracteres ASCII.
-
Passe a moeda como um código de moeda ISO 4217 de três letras:
USD, EUR, INR
Melhores práticas
- A Singular recomenda transmitir eventos usando a convenção de nomenclatura de eventos e atributos padrão da Singular.
- Se forem usados nomes personalizados de eventos de receita, eles devem ser enviados em inglês para melhorar a compatibilidade com postbacks da rede de anúncios.
- Os eventos de receita só devem ser enviados para a Singular quando o valor da receita for maior ou menor que 0.
Compra no aplicativo sem assinatura
Importante: Este método não é compatível com o rastreamento de Assinatura! Use este método para rastreamento de compras no aplicativo sem assinatura.
Se a sua aplicação utilizar o rastreio de IAP da App Store, recomenda-se a utilização do método iapComplete.
Esse método envia um evento de receita de IAP(compra no aplicativo da Apple) para a Singular com:
- Todos os detalhes da transação, que o Singular usará para enriquecer os relatórios.
- O recibo da transação, que será usado para validar a transação e analisar ou evitar tentativas de fraude.
Observações:
- Ao utilizar o iapComplete, é necessário incluir o objetoSKPaymentTransaction no evento.
- Qualquer receita reportada numa moeda diferente será convertida automaticamente para a moeda preferida da sua organização, conforme definido na sua conta Singular.
Método iapComplete
Envia um evento de receita para a Singular com o recibo da transação.
Assinaturas
(void)iapComplete:(id)transaction
(void)iapComplete:(id)transaction withName:(NSString *)name;
Exemplos de uso
// *** Get the SKPaymentTransaction* transaction object ***
let transaction:SKPaymentTransaction = ...
// Send a transaction event to Singular without a custom event name
Singular.iapComplete(transaction)
// Send a transaction event to Singular with a custom event name
Singular.iapComplete(transaction, withName:"MyCustomRevenue")
// *** Get the SKPaymentTransaction* transaction object ***
SKPaymentTransaction* transaction = ...;
// Send a transaction event to Singular without a custom event name
[Singular iapComplete:transaction];
// Send a transaction event to Singular with a custom event name
[Singular iapComplete:transaction withName:@"MyCustomRevenue"];
Receita de assinatura
Acompanhamento de assinaturas:
O Singular permite que você rastreie suas assinaturas e renovações dentro do seu aplicativo, fornecendo insights sobre o comportamento do usuário e geração de receita. Consulte nosso guia abrangente sobre como implementar eventos de assinatura usando o SDK Singular.[Guia de implementação técnica de eventos de assinatura].
Receita personalizada sem validação de compra
Se a sua aplicação não suportar o rastreio de compras na App Store, os métodos revenue ou customRevenue são recomendados. Estes métodos não efectuam a validação da compra e não devem incluir o objeto de compra ou o recibo.
Os métodos revenue e customRevenue permitem-lhe especificar manualmente o montante da transação e a moeda, bem como detalhes adicionais opcionais, como o número de série e a quantidade do produto, etc. O método customRevenue também permite-lhe passar um nome de evento personalizado.
Nota: se utilizar estes métodos, o Singular não valida a transação de compra.
Método revenue
Envia um evento de receita para a Singular com o valor da receita, moeda e detalhes opcionais.
Assinaturas
(void)revenue:(NSString *)currency amount:(double)amount;
(void)revenue:(NSString *)currency amount:(double)amount
productSKU:(NSString *)productSKU
productName:(NSString*)productName
productCategory:(NSString *)productCategory
productQuantity:(int)productQuantity
productPrice:(double)productPrice;
(void)revenue:(NSString *)currency amount:(double)amount
withAttributes:(NSDictionary*)attributes;
Exemplos de uso
// Revenue with no product details
Singular.revenue("USD", amount:1.99)
// Revenue with product details
Singular.revenue("EUR", amount:5.00,
productSKU:"SKU1928375",
productName:"Reservation Fee",
productCategory:"Fee",
productQuantity:1, productPrice:5.00)
// Send a Revenue Event with attributes in a dictionary
var dic: [AnyHashable : Any] = [:]
dic[ATTRIBUTE_SNG_ATTR_ITEM_DESCRIPTION] = "100% Organic Cotton Mixed Plaid Flannel Shirt"
dic[ATTRIBUTE_SNG_ATTR_ITEM_PRICE] = "$69.95"
dic[ATTRIBUTE_SNG_ATTR_RATING] = "5 Star"
dic[ATTRIBUTE_SNG_ATTR_SEARCH_STRING] = "Flannel Shirt"
Singular.revenue("USD", amount: 19.95, withAttributes: dic)
// Revenue with no product details
[Singular revenue:@"USD" amount:1.99];
// Revenue with product details
[Singular revenue:@"EUR" amount:5.00 productSKU:@"SKU1928375"
productName:@"Reservation Fee"
productCategory:@"Fee"
productQuantity:1
productPrice:5.00];
// Send a Revenue Event with attributes in a dictionary
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setValue:@"100% Organic Cotton Mixed Plaid Flannel Shirt"
forKey:ATTRIBUTE_SNG_ATTR_ITEM_DESCRIPTION];
[dic setValue:@"$69.95" forKey:ATTRIBUTE_SNG_ATTR_ITEM_PRICE];
[dic setValue:@"5 Star" forKey:ATTRIBUTE_SNG_ATTR_RATING];
[dic setValue:@"Flannel Shirt" forKey:ATTRIBUTE_SNG_ATTR_SEARCH_STRING];
[Singular revenue:@"USD" amount:19.99 withAttributes:dic];
Método customRevenue
Envia eventos de receita personalizados para a Singular, especificando o nome do evento, o valor da receita, o código da moeda e quaisquer atributos de transação adicionais. A Singular processa esses eventos para rastrear a receita in-app.
Assinaturas
(void)customRevenue:(NSString *)eventName
currency:(NSString *)currency
amount:(double)amount;
(void)customRevenue:(NSString *)eventName
currency:(NSString *)currency
amount:(double)amount
productSKU:(NSString *)productSKU
productName:(NSString *)productName
productCategory:(NSString *)productCategory
productQuantity:(int)productQuantity
productPrice:(double)productPrice;
(void)customRevenue:(NSString*)eventname
currency:(NSString *)currency
amount:(double)amount
withAttributes:(NSDictionary*)attributes;
Exemplos de uso
// Revenue with a custom name and no product details
Singular.customRevenue("MyCustomRevenue", currency:"USD", amount:1.99)
// Revenue with a custom name and product details
Singular.customRevenue("MyCustomRevenue", currency:"EUR", amount:5.00,
productSKU:"SKU1928375",
productName:"Reservation Fee",
productCategory:"Fee",
productQuantity:1,
productPrice:5.00)
// Send a Custom Revenue Event with attributes in a dictionary
var dic: [AnyHashable : Any] = [:]
dic[ATTRIBUTE_SNG_ATTR_ITEM_DESCRIPTION] = "100% Organic Cotton Mixed Plaid Flannel Shirt"
dic[ATTRIBUTE_SNG_ATTR_ITEM_PRICE] = "$69.95"
dic[ATTRIBUTE_SNG_ATTR_RATING] = "5 Star"
dic[ATTRIBUTE_SNG_ATTR_SEARCH_STRING] = "Flannel Shirt"
Singular.customRevenue("CustomRevenueWithArgsDic", currency: "USD", amount: 44.99, withAttributes: dic)
// Revenue with a custom name and no product details
[Singular customRevenue:@"MyCustomRevenue" currency:@"USD" amount:1.99];
// Revenue with a custom name and product details
[Singular customRevenue:@"MyCustomRevenue" currency:@"EUR" amount:5.00
productSKU:@"SKU1928375"
productName:@"Reservation Fee"
productCategory:@"Fee"
productQuantity:1
productPrice:5.00];
// Send a Custom Revenue Event with attributes in a dictionary
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setValue:@"100% Organic Cotton Mixed Plaid Flannel Shirt"
forKey:ATTRIBUTE_SNG_ATTR_ITEM_DESCRIPTION];
[dic setValue:@"$69.95" forKey:ATTRIBUTE_SNG_ATTR_ITEM_PRICE];
[dic setValue:@"5 Star" forKey:ATTRIBUTE_SNG_ATTR_RATING];
[dic setValue:@"Flannel Shirt" forKey:ATTRIBUTE_SNG_ATTR_SEARCH_STRING];
[Singular customRevenue:@"MyCustomRevenue" currency:@"USD" amount:44.99 withAttributes:dic];
Suporte ao StoreKit2
Se o seu aplicativo usa a estrutura StoreKit2 para rastreamento de compras no aplicativo, o método customRevenue é recomendado. O método customRevenue requer que você forneça a transação e o objeto de produto em jsonRepresentation.
A validação de compra não é suportada para o StoreKit2
Método customRevenue
Assinaturas
+ (void)customRevenue:(NSData *)transactionJsonRepresentation productJsonRepresentation:(NSData *)productJsonRepresentation;
+ (void)customRevenue:(NSString *)eventName transactionJsonRepresentation:(NSData *)transactionJsonRepresentation productJsonRepresentation:(NSData *)productJsonRepresentation;
Exemplos de utilização
// Fetch transaction and product from StoreKit2
let transaction = ... // Assume this is a valid StoreKit2 transaction
let product = ... // Assume this is a valid StoreKit2 product
// Custom Revenue using __iap__ event name with transaction and product JSON representations
Singular.customRevenue(
transactionJsonRepresentation: transaction.jsonRepresentation,
productJsonRepresentation: product.jsonRepresentation )
// Custom Revenue with custom event name using transaction and product JSON representations
Singular.customRevenue(
"PaymentSuccess",
transactionJsonRepresentation: transaction.jsonRepresentation,
productJsonRepresentation: product.jsonRepresentation )
}
// Fetch transaction and product from StoreKit2
SKTransaction *transaction = ...; // Assume this is a valid StoreKit2 transaction
SKProduct *product = ...; // Assume this is a valid StoreKit2 product
// Convert transaction and product JSON representations to NSData
NSData *transactionData = [transaction.jsonRepresentation
dataUsingEncoding:NSUTF8StringEncoding];
NSData *productData = [product.jsonRepresentation
dataUsingEncoding:NSUTF8StringEncoding];
// Custom Revenue using transaction and product JSON representations
[Singular customRevenue:transactionData
productJsonRepresentation:productData];
// Custom Revenue with event name using transaction and product JSON representations
[Singular customRevenue:@"PaymentSuccess"
transactionJsonRepresentation:transactionData
productJsonRepresentation:productData];
Rastreamento de eventos híbrido (avançado)
A Singular recomenda o envio de todos os eventos e receitas por meio do SDK da Singular integrado ao seu aplicativo. No entanto, a Singular pode coletar eventos e receitas de outras fontes.
Qualquer evento NÃO enviado do SDK da Singular deve estar em conformidade com os requisitos de documentação de eventos de servidor para servidor da Singular e fornecer o identificador de dispositivo correspondente para atribuir corretamente um evento.
Importante:
Ocorrerão discrepâncias se os identificadores de dispositivo usados nas solicitações de eventos de servidor para servidor não tiverem um identificador de dispositivo correspondente no Singular. Tenha em atenção as seguintes possibilidades:
- Se uma solicitação de evento for recebida "antes" de o SDK do Singular ter gravado o identificador do dispositivo, a partir de uma sessão de aplicativo, a solicitação de evento será considerada a "primeira sessão" para o dispositivo desconhecido e o Singular atribuirá o dispositivo como uma atribuição orgânica.
- Se o Singular SDK tiver registado um identificador de dispositivo, mas o identificador do Singular SDK for diferente do identificador de dispositivo especificado no pedido de evento de servidor para servidor, o evento será atribuído incorretamente.
Guias de rastreamento de eventos híbridos
Envio de eventos de um servidor interno
A Singular pode coletar dados sobre a receita do seu servidor para ajudar a analisar o desempenho e o ROI de suas campanhas.
Requisitos:
- A partir de um evento de registo ou de início de sessão na aplicação, capture e passe os identificadores do dispositivo e armazene estes dados com o ID de utilizador no seu servidor. Como os identificadores de dispositivo podem mudar para um utilizador, certifique-se de que actualiza os identificadores quando um utilizador gera uma sessão de aplicação. Isto garante que o evento do lado do servidor será atribuído ao dispositivo correto.
- Os eventos do lado do servidor são específicos da plataforma e só devem ser enviados com o identificador de dispositivo correspondente à plataforma do dispositivo (por exemplo, IDFA ou IDFV para dispositivos iOS).
- Pode utilizar o mecanismo de postback do Singular Internal BI para enviar um evento em tempo real para o seu ponto de extremidade interno, para que possa atualizar o conjunto de dados no lado do servidor. Consulte as Perguntas frequentes sobre o postback do BI interno.
- Reveja a secção "Acompanhamento de receitas" no guia de Integração Servidor a Servidor para obter mais detalhes.
Envio de eventos de um fornecedor de receitas
Provedores de terceiros, como RevenueCat ou adapty, podem fornecer receita de compra e assinatura para a Singular.
Siga os links abaixo para obter detalhes sobre como ativar esses parceiros.
Envio de eventos do Segment
Para habilitar o Segment para enviar eventos para a Singular, em paralelo com o SDK da Singular, é preciso adicionar um Destino "Cloud-Mode" no Segment. Siga nosso guia AQUI.