Siga as instruções abaixo para declarar permissões específicas da API e configurar o acesso do SDK aos recursos gerenciados pela API de destino.
Declarar permissões específicas da API AdServices
O acesso a cada PPAPI requer uma permissão normal
dos serviços de publicidade. No manifesto,
declare as permissões de acesso que correspondem às APIs
necessárias no app ou SDK.
API Attribution Reporting
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" />
API Attribution Reporting (com relatórios de depuração):
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" />
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />
API de público-alvo personalizado, Protected Audience:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_CUSTOM_AUDIENCE" />
API Topics:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS" />
Opcionalmente, para receber relatórios de depuração com a API Attribution Reporting API, inclua a permissão AD_ID:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />
Se o projeto tiver dependências em módulos ou SDKs, eles já podem declarar as permissões necessárias dos serviços de publicidade nos arquivos de manifesto. Por padrão, o build do Gradle mescla todos os arquivos de manifesto em um único arquivo, empacotado no app. Use a visualização manifesto integrado para verificar se as permissões corretas são usadas.
Se for necessário impedir que qualquer permissão seja mesclada no seu app
por meio de dependências, por exemplo, SDKs, inclua o marcador de nó remove
para
as permissões específicas. O exemplo a seguir mostra como evitar
a mesclagem da permissão da API Topics.
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS"
tools:node="remove" />
Configurar serviços de publicidade específicos das APIs
Semelhante às permissões de acesso à PPAPI, cada API tem uma entrada correspondente na configuração dos serviços de publicidade. Essa configuração oferece controlar o acesso a recursos gerenciados pelas APIs no app ou SDK incorporado.
No manifesto, especifique uma propriedade adservicesConfig
, conforme mostrado
no seguinte
exemplo:
<application ...>
...
<property android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/ad_services_config" />
...
</application>
Especifique o recurso XML dos serviços de publicidade referenciados no manifesto, como
res/xml/ad_services_config.xml
. Para cada API de preservação de privacidade aplicável a
seu app (ou SDK incorporado), defina o atributo allowAllToAccess
como true
para
conceder acesso a qualquer autor da chamada.
Como alternativa, é possível usar o atributo allowAdPartnersToAccess
para conceder
acesso detalhado à API para cada adtech. Será necessário fornecer uma lista de
IDs de conta de registro de desenvolvedor recebidos por meio do registro. Se o
atributo allowAllToAccess
estiver definido como true
, ele vai ter precedência
sobre qualquer ID de conta de registro especificado no atributo
allowAdPartnersToAccess
.
As plataformas de adtech também precisam garantir que os clientes do app concedam corretamente acesso às APIs de preservação de privacidade necessárias na configuração dos serviços de publicidade.
O exemplo a seguir mostra como especificar o acesso amplo para permitir qualquer registro acesso ao ID da conta a todas as APIs que preservam a privacidade:
<ad-services-config>
<!-- Attribution API -->
<attribution allowAllToAccess="true" />
<!-- Topics API -->
<topics allowAllToAccess="true" />
<!-- Protected Audience on Android API -->
<custom-audiences allowAllToAccess="true" />
</ad-services-config>
O exemplo a seguir mostra como especificar acesso detalhado a cada API que preserva a privacidade para IDs de conta de registro específicos:
<ad-services-config>
<!-- Attribution API -->
<attribution allowAdPartnersToAccess="ENROLLMENT-ID" allowAllToAccess="false" />
<!-- Topics API -->
<includes-sdk-library name="ENROLLMENT-ID" />
<topics allowAdPartnersToAccess="ENROLLMENT-ID" allowAllToAccess="false" />
<!-- Protected Audience on Android API -->
<custom-audiences allowAdPartnersToAccess="ENROLLMENT-ID" allowAllToAccess="false" />
</ad-services-config>
Declarar dependências da biblioteca do Jetpack
Use a biblioteca ads-adservices do Jetpack 1.0.0-beta01 ou mais recente para fazer a integração com as APIs do Sandbox de privacidade. Você pode usar essa biblioteca para abstraia seu app dos detalhes no nível da plataforma e simplifica a integração com que preservam a privacidade.
- Adicione um repositório Maven ao seu projeto.
- Declare as dependências de biblioteca do ads-adservices do Jetpack no
arquivo
build.gradle
do app ou módulo. - Use APIs dos pacotes
androidx.privacysandbox.ads.adservices.*
. - A biblioteca ads-adservices do Jetpack oferece suporte à corrotina incorporada do Kotlin. Talvez seja necessário incorporar as dependências com reconhecimento de ciclo de vida adequadas para que seu projeto gerencie escopos de corrotinas.
Conferir a disponibilidade da versão das extensões de serviços do anúncio
Se você estiver usando a biblioteca ads-services do Jetpack para fazer a integração com
APIs que preservam a privacidade, a biblioteca verifica a disponibilidade do
APIs solicitadas na função obtain()
. A função vai retornar um valor nulo se a
API solicitada não estiver disponível no dispositivo. O exemplo a seguir ilustra
como inicializar TopicsManager
para a API Topics. Funciona de forma parecida com o
acesso a outras APIs que preservam a privacidade.
Kotlin
import androidx.privacysandbox.ads.adservices.topics.TopicsManager
// The initialization function will return null if the requested
// functionality is not available on the device.
val topicsManager = TopicsManager.obtain(context)
Java
import androidx.privacysandbox.ads.adservices.topics.TopicsManager;
// The initialization function will return null if the requested
// functionality is not available on the device.
TopicsManager topicsManager = TopicsManager.obtain(context);
Se você estiver usando as APIs AdServices diretamente no SDK da extensão, confira a
versão de extensões do AdServices que inclui as APIs AdServices que você quer usar.
Na referência da API, você pode identificar a versão que um determinado AdServices
API é introduzida. Por exemplo, a referência da API para a classe TopicsManager
indica que ela foi "adicionada na versão 4 das extensões de serviços de publicidade". Use as seguintes
verificações condicionais para validar extensões do SDK que contêm APIs AdServices.
Kotlin
import android.os.ext.SdkExtensions
if (SDK_INT >= Build.VERSION_CODES.R && // The extensions API is available since R.
SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4) {
// AdServices API is available.
...
}
Java
import android.os.ext.SdkExtensions;
if (SDK_INT >= Build.VERSION_CODES.R && // The extensions API is available since R.
SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4) {
// AdServices API is available.
...
}
Limitação de acesso em primeiro plano
Para oferecer transparência, o acesso ao SDK Runtime e às APIs que preservam a privacidade
é limitado a apps com uma atividade visível ou com um
RunningAppProcessInfo
de IMPORTANCE_FOREGROUND
.