Filtragem de anúncios de instalação de apps para a API Protected Audience

Normalmente, as novas instalações de apps para dispositivos móveis são impulsionadas por anúncios de instalação de apps. Para maximizar o ROI de gastos com publicidade, é recomendável não mostrar um anúncio para instalar um app em dispositivos que já tenham o mesmo app instalado. Nesta proposta, nos referimos a essa prática como "filtragem de anúncios de instalação de apps".

A proposta mostra como a API Protected Audience no Android oferece suporte à filtragem de anúncios contextuais, em especial a filtragem de anúncios de instalação de apps, para preservar a privacidade. Para participar, o app no dispositivo precisa ativar explicitamente a filtragem de anúncios de instalação de apps. Durante a seleção de anúncios, os candidatos são filtrados com base na lista de apps instalados no dispositivo conhecido pela adtech.

A lista de apps instalados só fica visível no fluxo de seleção de anúncios, e o processo depende da plataforma de compra para sinalizar que um anúncio específico precisa ser filtrado com base na existência de um app no dispositivo.

Para configurar a filtragem de anúncios de instalação de apps, siga estas etapas:

Etapa 1: registrar o app para a filtragem de anúncios de instalação de apps

Para ativar a filtragem de anúncios de instalação de apps, o desenvolvedor invoca a API de registro registerForAdFiltering, pelo app dele ou por um SDK de adtech, com uma lista de eTLD+1s do comprador de adtechs. Isso permite que somente os compradores na lista filtrem anúncios com base no status de instalação do app, diretamente ou pelo SDK da adtech. O registro dá controle total ao desenvolvedor do app para participar ou não da filtragem de anúncios de instalação de apps. java void registerForAdFiltering(List<AdTechIdentifier> buyers);

Etapa 2: solicitar a filtragem de anúncios de instalação de apps

Quando um anúncio é considerado para lances, os compradores podem optar por sinalizar o anúncio que vai ser filtrado com base no status de instalação de um app. Para fazer isso, inclua o nome do pacote do app nos metadados do anúncio. A solicitação de filtragem de anúncios de instalação de apps faz parte dos dados de anúncios alimentados no processo de leilão da API Protected Audience. Esses dados são criados de maneira diferente, dependendo se o anúncio é contextual ou de remarketing.

  • No caso de uso de anúncios contextuais, que é o principal para filtragem de anúncios de instalação de apps, as informações de filtragem são incluídas como parte dos dados dos anúncios que os compradores podem fornecer aos vendedores em resposta a lances contextuais fora da API Protected Audience. A API espera que essas informações de filtragem sejam retornadas como parte da resposta contextual, assim como qualquer outro metadado específico de anúncios.
  • Para o caso de uso de remarketing, a Protected Audience espera que as informações de filtragem sejam incluídas no público-alvo personalizado. Há duas oportunidades para que essa inclusão aconteça: ao aderir ao público-alvo e ao buscar novos dados do público-alvo como parte do processo de atualização. A solicitação para filtrar anúncios de instalação de apps precisa ter a seguinte aparência no objeto JSON AdData: json { "render_uri": "https://..", "metadata": {..}, "filters": { "app_install": { "app_package_names": ["app1.package", "app2.package"] } } }

Etapa 3: filtrar anúncios de instalação de apps durante a seleção de anúncios

Durante uma solicitação de anúncio, o comprador pode retornar vários anúncios ao vendedor com informações de filtragem para que os anúncios de aplicativos instalados possam ser filtrados. O lado do vendedor precisa transmitir as informações de filtragem como parte da configuração da função selectAds no campo adData. O Android espera um formato de mensagem semelhante ao mostrado abaixo.

AdData myAdData = new AdData.Builder()
        .setRenderUri(Uri.parse("https://.."))
        .setMetadata("{...}")
        .setFilters(new AdFilters.Builder()
                .setAppInstalledFilter(new AppInstalledFilter.Builder()
                    .setPackageNames(ImmutableList.of("app1.package", "app2.package"))
                    .build())
                .build())
        .build();
AdSelectionConfig myAdSelectionConfig = new AdSelectionConfig.Builder()
    .setSeller(AdTechIdentifier.fromString("example-ssp1.com"))
    .setDecisionLogicUri(Uri.parse("https://..."))
    ...
    .setContextualAds(ImmutableList.of(new ContextualAd.Builder()
                      .setBuyer(AdTechIdentifier.fromString("example.com"))
                      .setReportingUri("https://example.com/reporting")
                      .setBid(20)
                      // myAdData could be taken from the JSON above
                      .setAd(myAdData)
                      .build()))
    .build();
// Invoke ad services API to initiate ad selection workflow.
selectAds(myAdSelectionConfig);

A filtragem é processada na API selectAds. A API Protected Audience filtra o anúncio se o app especificado na mensagem corresponde ao app na lista de instalação de apps específica dos compradores de adtechs. Dois resultados são possíveis:

  • O app não está na lista, ou seja, não está instalado e aberto.
  • O app está na lista, o que significa que ele está instalado e aberto. Se a API Protected Audience detectar que um app já existe, o anúncio vai ser excluído da lista de anúncios usados pelo leilão para executar scoreAds.

Considerações sobre o envolvimento de anúncios contextuais

Com a filtragem de anúncios de instalação de apps, as APIs Protected Audience começam a oferecer suporte à filtragem de anúncios contextuais. É importante especificar alguns itens nas situações em que o leilão é uma combinação de anúncios contextuais e de remarketing ou é composto inteiramente de anúncios contextuais.

  • Quando um leilão selectAd é realizado, o comprador tem a opção de transmitir uma lista de objetos ContextualAd. Esses objetos contêm o eTLD+1 do comprador do anúncio, o lance para o anúncio, um URL que aponta para a lógica de relatórios do anúncio e o AdData que contém o URL real do conteúdo do anúncio e uma assinatura de verificação pertencente ao comprador. Consulte assinatura de anúncios contextuais para mais detalhes. O formato AdData é usado em anúncios contextuais e de remarketing.
  • No início do processo de leilão, os anúncios contextuais e de remarketing são filtrados usando o conjunto de nomes de pacotes especificados incluídos no AdData.adFilters.appInstallFilters.packageNames. Em seguida, os valores de lance são decididos para todos os anúncios de remarketing, e tanto eles quanto os contextuais são pontuados usando a função scoreAds fornecida. Vence o anúncio com a maior pontuação. Esse processo funciona mesmo sem anúncios de remarketing.
  • Se um anúncio contextual vence o leilão, e o relatório de impressões é acionado pelo app, a API Protected Audience faz o download e executa uma função JS chamada reportWin() do URL de relatório incluído nos dados do anúncio contextual. Esse processo é semelhante à forma como os relatórios são feitos quando um anúncio de remarketing vence o leilão.

    Exemplo de função de relatório do JavaScript:

    function reportWin(ad_selection_signals, per_buyer_signals, signals_for_buyer,
    contextual_signals) {
    let reporting_address = 'https://reporting.example.com';
    return {'status': 0, 'results': {'reporting_uri':
         reporting_address + '?some_signal=' + per_buyer_signals.some_signal} };
    }
    

Assinatura de anúncios contextuais

  • Anúncios contextuais que incluem filtragem de instalação de apps precisam ser assinados pelo comprador. A plataforma usa essa assinatura para verificar a adtech que forneceu os anúncios e quais filtros de instalação de apps de adtech são aplicados aos anúncios. Isso é feito para evitar que uma adtech maliciosa use a identidade de outra para se beneficiar com o registro de filtragem de instalação de apps da outra adtech.

  • O Sandbox de privacidade vai buscar essas chaves no endpoint de adtech fornecido durante o registro. Como prática recomendada, sugerimos que as chaves sejam atualizadas com frequência, mas no máximo a cada seis meses.

  • O Sandbox de privacidade vai pedir que as adtechs confirmem a disponibilidade do endpoint fornecido durante o processo de registro. Para mais detalhes sobre as ações exigidas pelas adtechs atuais e recém-registradas, consulte as Instruções de registro.

  • Um guia para desenvolvedores com instruções mais detalhadas para implementação será publicado em breve.