SDK do iOS - Acompanhamento de eventos in-app

Documento

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
SwiftObjective-C
// Using Standard Event


Singular.event(EVENT_SNG_LOGIN)

// Using Custom Event


Singular.event("signup")
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
SwiftObjective-C
//Using Standard Event
var dic: [AnyHashable : Any] = [:]
dic[ATTRIBUTE_SNG_ATTR_CONTENT_TYPE] = "PrivacyController"
dic[ATTRIBUTE_SNG_ATTR_CONTENT_ID] = "0"
dic[ATTRIBUTE_SNG_ATTR_CONTENT] = "GDPR and CCPA Opt-Out Options"
Singular.event(EVENT_SNG_CONTENT_VIEW, withArgs: dic)

//Using Custom Event
var bonusdata: [AnyHashable: Any] = [ "level": 10, "points": 500 ]
Singular.event("Bonus Points Earned", withArgs: bonusdata)

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

SwiftObjective-C
// *** 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")

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

SwiftObjective-C
// 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)

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

SwiftObjective-C
// 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)

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

SwiftObjective-C
// 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 )
}

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.