SDK do Flutter - Suporte para SKAdNetwork

Documento

Introdução: SKAdNetwork e SKAN

O SDK para iOS da Singular simplifica a integração com a SKAdNetwork, suportando os recursos do SKAN 4.0, como postbacks múltiplos, IDs de origem hierárquicos e valores de conversão de granularidade grossa. Baseado no padrão SKAN de código aberto da Singular, ele garante fácil configuração e compatibilidade com redes de anúncios. Para obter detalhes de configuração, consulte o Guia SKAdNetwork da Singular.


Suporte ao rastreamento de SKAdNetwork

Dica: o rastreamento de SKAdNetwork é ativado por padrão ao usar o SDK do Singular.

Para desativar ou desligar o suporte para SKAdNetwork:

  • Defina o método de configuração skAdNetworkEnabled como FALSE ao criar o objeto SingularConfig.

Manipulação de AppTrackingTransparency (ATT)

Para iOS 14.5+ (incluindo iOS 18), utilize ATTrackingManager para solicitar o consentimento do utilizador antes de aceder ao IDFA para rastreio. O SDK do iOS da Singular (v12.x) dá suporte ao ATT, permitindo a inicialização antes do consentimento e atrasando os eventos até que o consentimento seja concedido ou ocorra um tempo limite. Isso garante a conformidade com as regras de privacidade da Apple e a compatibilidade com a SKAdNetwork (SKAN) 4.0.

Implementação

  1. Adicionar a estrutura ATT:

    • Inclua AppTrackingTransparency no seu projeto Xcode.
    • Actualize Info.plist com NSUserTrackingUsageDescription (por exemplo, "Esta aplicação utiliza o rastreio para personalizar anúncios.").
  2. Solicitar consentimento da ATT:

    • Solicite o consentimento quando o aplicativo for iniciado ou após o onboarding, com base na sua estratégia de UX.
    • Use o SDK da Singular para lidar com a inicialização pré-consentimento.
  3. Configurar o SDK do Singular:

    • Defina o método de configuração waitForTrackingAuthorizationWithTimeoutInterval ao criar o objeto SingularConfig para atrasar eventos até que o consentimento de ATT seja resolvido ou o tempo limite (por exemplo, 30 segundos) expire.

Ao usar o Flutter, você precisará contar com um pacote de terceiros para implementar a transparência do rastreamento de aplicativos. Por exemplo: o plugin app_tracking_transparency para o seu Flutter

Dica: quando você define um atraso de inicialização, o fluxo do aplicativo é o seguinte:

  1. Quando o aplicativo é aberto, o Singular SDK começa a gravar uma sessão e eventos do usuário, mas ainda não os envia para o servidor Singular.
  2. Quando o consentimento do App Tracking Transparency é concedido/negado ou o tempo definido passa, o SDK envia a sessão e quaisquer eventos em fila para o servidor Singular (com ou sem o IDFA).
  3. O Singular então inicia o processo de atribuição, aproveitando o IDFA se ele estiver disponível.
Saiba mais sobre todos os cenários possíveis de ATT

A tabela a seguir resume os cenários possíveis usando essa integração:

Cenário Disponibilidade do IDFA
O utilizador vê a caixa de diálogo de consentimento e concede o consentimento antes de decorrido o tempo definido. O IDFA está disponível
O utilizador vê o diálogo de consentimento e recusa o consentimento antes do tempo definido. IDFA não está disponível
O tempo definido expira, o diálogo de consentimento é mostrado ao utilizador e este dá o seu consentimento. O IDFA está disponível apenas para os eventos do utilizador que são comunicados após o consentimento ser concedido
O tempo definido expira e, em seguida, é mostrado ao utilizador o diálogo de consentimento e o consentimento é negado. O IDFA não está disponível
É mostrada ao utilizador a caixa de diálogo de consentimento, este sai da aplicação sem tomar qualquer ação e, mais tarde, abre a aplicação e concede o consentimento após o tempo definido ter expirado. Todos os eventos em fila de espera são enviados para o servidor Singular quando a aplicação é reaberta. O IDFA não está disponível para esses eventos. Quaisquer eventos rastreados após o consentimento ser concedido têm o IDFA associado a eles.
É mostrada ao utilizador a caixa de diálogo de consentimento, este sai da aplicação sem tomar qualquer ação e, mais tarde, abre a aplicação e nega o consentimento. Todos os eventos em fila são enviados para os servidores Singular quando o aplicativo é reaberto. O IDFA não está disponível para esses eventos ou para qualquer um dos eventos rastreados posteriormente.

Práticas recomendadas

  • Timing imediato: Solicite o consentimento do ATT no lançamento do aplicativo para maximizar a disponibilidade do IDFA ou adie para depois do onboarding para melhorar o contexto do usuário. Teste ambos para equilibrar as taxas de consentimento e a experiência do utilizador.
  • Tempo limite: Defina waitForTrackingAuthorizationWithTimeoutInterval para 30-300 segundos. Após o tempo limite, a Singular prossegue com a atribuição do SKAN 4.0 (sem IDFA).
  • Integração do SKAN 4.0: Certifique-se de que as atualizações do valor de conversão estejam alinhadas com o consentimento ATT para otimizar os postbacks do SKAN (por exemplo, use o painel do Singular para mapear eventos para os valores 0-63).
  • Tratamento de erros: Verificar ATTrackingManager.trackingAuthorizationStatus para restricted (por exemplo, controlos parentais) ou notDetermined estados e registo para análise.

Tratamento de valores de conversão manual

Modo gerenciado

Por padrão, a implementação da SKAdNetwork gerencia o valor de conversão diretamente do lado do servidor Singular.

Isto permite a máxima flexibilidade, uma vez que é possível definir e alterar os valores de conversão através da plataforma Singular, sem modificar o código do lado do cliente.

Este modo de gestão do lado do servidor também o ajuda a lidar com os temporizadores da SKAdNetwork. A SKAdNetwork permite-lhe atualizar o valor de conversão no prazo de 24 horas a partir do momento do registo na SKAdNetwork. Qualquer chamada para atualizar o valor de conversão prolonga o temporizador por mais 24 horas. Por conseguinte, ao escolher os seus eventos de conversão, terá de se certificar de que os eventos ocorrem dentro dessa janela de atualização. No modo gerido, pode alterar a configuração do evento de conversão em qualquer altura, sem lançar uma nova versão da sua aplicação.

Modo manual

Se pretender atualizar o valor de conversão por si próprio:

  • Defina o método de configuração manualSkanConversionManagement ao criar o objeto SingularConfig.
  • Depois, para atualizar o valor de conversão, utilize o método skanUpdateConversionValue sempre que necessário no ciclo de vida da sua aplicação.
  • Ou, para atualizar manualmente os valores de conversão da SKAdNetwork 4.0, utilize o método skanUpdateConversionValues sempre que necessário no ciclo de vida da sua aplicação.

Nota: O método skanUpdateConversionValue não funcionará se não tiver definido o SDK para actualizações manuais na inicialização.

Recuperando o valor de conversão

Para obter o valor de conversão atual, utilize o método skanGetConversionValue. Este método funciona tanto no modo gerido como no modo manual.