Implementação do AFS em apps para dispositivos móveis (AFSMA) no Android

Pré-requisitos

Para seguir este guia de implementação, é necessário ter familiaridade com:

Classes

Para veicular anúncios do AFSMA (também conhecidos como anúncios de pesquisa de altura dinâmica) em seu aplicativo, implemente as seguintes classes:

SearchAdView

  • Esta classe é herdada da classe ViewGroup do Android e exibe os anúncios do AFSMA. O SearchAdView faz a solicitação de um anúncio com uma DynamicHeightSearchAdRequest e renderiza os anúncios retornados. A SearchAdView precisa ser adicionada a qualquer um dos grupos de visualizações existentes do app.
  • O SearchAdView precisa ser instanciado com o contexto em que o SearchAdView está sendo executado, normalmente um Activity.
  • Depois que o SearchAdView for instanciado, será necessário chamar o método setAdSize(). com AdSize.SEARCH para solicitar anúncios do AFSMA. Outros valores de enumeração solicitarão anúncios não compatíveis com o AFS em apps para dispositivos móveis.
  • Chame o método setAdUnitId() nesse objeto com seu código de propriedade.

DynamicHeightSearchAdRequest.Builder

  • Esta classe encapsula os parâmetros de solicitação de anúncio. Isso é análogo à configuração de parâmetros nos objetos de solicitação de anúncio JavaScript (opções de página, opções de bloco) para o AFS na Web para computadores e dispositivos móveis.
  • Definir parâmetros com os setters apropriados (em outras palavras, chame setQuery() para definir o parâmetro de consulta).

Implementação de exemplo

O exemplo abaixo demonstra o uso de um Activity para criar um SearchAdView. como uma subvisualização de um ViewGroup. Para solicitar anúncios do AFSMA corretamente, o SearchAdView precisa chamar o método setAdSize() com AdSize.SEARCH.

//  MainActivity.java implementation
//  (MainActivity is a subclass of Activity)

// Create the SearchAdView
final SearchAdView searchAdView = new SearchAdView(this);

// Set parameter to request for dynamic height search ads
searchAdView.setAdSize(AdSize.SEARCH); // Important!

// Replace with your pub ID (e.g. ms-app-pub-9616389000213823)
searchAdView.setAdUnitId("ms-app-pub-################");

// Add searchAdView to parent view group
...

No mesmo Activity, crie um DynamicHeightSearchAdRequest.Builder que determina os parâmetros do anúncio que serão renderizados no SearchAdView. Os anúncios do AFSMA são configurados da mesma maneira que os anúncios personalizados de pesquisa do AFS. veja os anúncios do AFS Referência para mais detalhes.

// Create the ad request
DynamicHeightSearchAdRequest.Builder builder =
        new DynamicHeightSearchAdRequest.Builder();
builder.setQuery("flowers");
builder.setNumber(2);

// Replace with the ID of a style from your custom search styles
builder.setAdvancedOptionValue("csa_styleId", "0000000001");

// Customization options (set using setters on
// DynamicHeightSearchAdRequest.Builder)
builder.setAdTest(true);

Outras opções de personalização são possíveis definindo propriedades adicionais no DynamicHeightSearchAdRequest.Builder objeto.

Para fazer uma solicitação de anúncio, chame o método loadAd() com o Objeto DynamicHeightSearchAdRequest.Builder do objeto SearchAdView:

searchAdView.loadAd(builder.build());

Opções avançadas

A maioria dos parâmetros de solicitação de anúncio pode ser definida por meio de métodos setter no objeto DynamicHeightSearchAdRequest.Builder. Qualquer parâmetro que não tenha um método setter no DynamicHeightSearchAdRequest.Builder pode ser definido usando pares de chave-valor com o setAdvancedOptionValue() . Confira os anúncios personalizados de pesquisa do AFS Referência para uma lista completa de configurações que podem ser definidas com o setAdvancedOptionValue().

O parâmetro da chave precisa ter o prefixo "csa_" para que a propriedade seja definida corretamente.

// Advanced customization options (set using key-value pair)

// Set a parameter (parameter_name) and its value (parameter_value)
// builder.setAdvancedOptionValue("csa_parameter_name", "parameter_value");

// Example: Show visible URL below description
// (domainLinkAboveDescription: false)
builder.setAdvancedOptionValue("csa_domainLinkAboveDescription", "false");

Se você usar o método setter de um parâmetro e o definir com setAdvancedOptionValue, a segunda vai substituir o valor da primeira.

Como investigar erros

O SearchAdView (searchAdView aqui) contém um método setAdListener(). para ajudar a investigar os erros. No mesmo Activity:

searchAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Called when an ad is loaded
        super.onAdLoaded();
        Toast.makeText(MainActivity.this, "Ad Loaded",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Loaded");
    }

    @Override
    public void onAdOpened() {
        // Called when an ad opens an overlay that covers the screen
        super.onAdOpened();
        Toast.makeText(MainActivity.this, "Ad Opened",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Opened");
    }

    @Override
    public void onAdLeftApplication() {
        // Called when an ad leaves the application
        // (to go to the browser for example)
        super.onAdLeftApplication();
        Toast.makeText(MainActivity.this, "Ad Left Application",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Left Application");
    }

    @Override
    public void onAdFailedToLoad(int errorCode) {
        // Called when an ad request failed
        super.onAdFailedToLoad(errorCode);
        Toast.makeText(MainActivity.this, "Ad Failed to Load: " + errorCode,
                Toast.LENGTH_SHORT).show();
        Log.e(MainActivity.class.getSimpleName(), "Ad Failed to Load: " +
                errorCode);
    }
});

Constantes usadas no método de callback onAdFailedToLoad() estão descritas na API Referência.

Preparação para os requisitos de divulgação de dados do Google Play

Em maio de 2021, o Google Play anunciou a nova seção "Segurança dos dados", uma declaração fornecida pelo desenvolvedor sobre as práticas de coleta, compartilhamento e segurança de dados de um app.

Nesta página, você encontra os requisitos da divulgação de dados relacionados ao seu uso do SDK nativo do AFS (também aplicável ao uso do AdSense para Shopping). Nesta página, você pode encontrar informações sobre se e como nossos SDKs lidam com os dados do usuário final.

Nosso objetivo é oferecer o máximo de transparência possível ao ajudar você. No entanto, como desenvolvedor do app, você é a única pessoa responsável por decidir como responder ao formulário da seção "Segurança dos dados" do Google Play em relação às práticas de coleta, compartilhamento e segurança de dados do usuário final do seu app.

Como usar as informações desta página

Nesta página, listamos os dados do usuário final coletados somente pela versão mais recente do SDK.

Para concluir a divulgação de dados, use o guia sobre tipos de dados do Android e determine qual tipo descreve melhor os dados coletados. Na divulgação de dados, considere também a forma como o app específico compartilha e usa os dados coletados.

Acessos e coletas de SDK de tipos de dados

Pacotes:

com.google.android.gms:play-services-afs-native

com.google.ads.afsn

Dados coletados automaticamente

O SDK do AFS coleta os dados a seguir automaticamente. Todos os dados são transmitidos para fora do dispositivo ao Google com a finalidade de veicular anúncios e criptografados em trânsito. As informações pessoais do usuário nunca são coletadas, a menos que sejam enviadas em uma consulta do usuário pelo seu app.

Dados Estes dados são coletados para as seguintes finalidades:
Endereço IP Resumo:
  • Segurança, conformidade e prevenção de fraudes
  • Publicidade ou marketing
  • Derivar o local aproximado
. Detalhe:
O endereço IP é usado no monitoramento de fraudes e abusos, além de descobrir a localização aproximada do usuário.

O local aproximado é usado para garantir que os anúncios veiculados estejam em conformidade com os regulamentos locais e fornecer anúncios relevantes à localização geográfica aproximada do usuário.

Atividade em apps
  • Visualizações de página e toques no app
  • Histórico de pesquisa no app
Resumo:
  • Analytics
  • Segurança, conformidade e prevenção de fraudes
  • Publicidade ou marketing
  • Personalização
. Detalhe:
Seu app fornece a consulta do usuário para retornarmos anúncios de pesquisa relevantes à palavra-chave. Medimos as visualizações e o engajamento (toques) com os anúncios retornados.
Diagnóstico Resumo:
  • Analytics
. Detalhe:
O SDK mede a latência de renderização dos anúncios para permitir que melhorias no produto sejam implementadas e medidas. Também enviamos relatórios de erros/erros e, ocasionalmente, adicionamos outras instrumentações conforme necessário para entender como a funcionalidade é usada pelos editores.
Identificadores do dispositivo e outros Resumo:
  • Segurança, conformidade e prevenção de fraudes
  • Publicidade ou marketing
. Detalhe:
O ID do dispositivo é usado para monitorar fraudes e abusos, além de medir a performance de anúncios.