O SDK da plataforma de mensagens de usuários (UMP) do Google é uma ferramenta de privacidade e mensagens para ajudar você a gerenciar as opções de privacidade. Para mais informações, consulte Sobre privacidade e mensagens.
Criar um tipo de mensagem
Crie mensagens do usuário com um dos tipos disponíveis na guia Privacidade e mensagens da sua conta da AdMob. O SDK da UMP tenta mostrar uma mensagem de privacidade criada com base no ID do aplicativo da AdMob definido no seu projeto.
Para mais detalhes, consulte Sobre privacidade e mensagens.
Solicitar consentimento
Para solicitar consentimento, siga estas etapas:
- Solicitação das informações mais recentes de consentimento do usuário.
- Carregue e apresente um formulário de consentimento, se necessário.
Solicitação de informações de consentimento
Solicite uma atualização das informações de consentimento do usuário a cada inicialização do app usando requestConsentInfoUpdate()
. Essa solicitação verifica
o seguinte:
- Se o consentimento é obrigatório. Por exemplo, o consentimento é necessário pela primeira vez ou a decisão de consentimento anterior expirou.
- Se um ponto de entrada de opções de privacidade é necessário. Algumas mensagens de privacidade exigem que os apps permitam que os usuários modifiquem as opções de privacidade a qualquer momento.
Carregar e apresentar um formulário de mensagem de privacidade, se necessário
Depois de receber o status de consentimento mais atualizado, chame
loadAndShowConsentFormIfRequired()
para carregar os formulários necessários para
coletar o consentimento do usuário. Após o carregamento, os formulários são apresentados imediatamente.
O código abaixo demonstra como solicitar as informações de consentimento mais recentes do usuário. Se necessário, o código é carregado e apresenta um formulário de mensagem de privacidade:
@override
void initState() {
super.initState();
// Create a ConsentRequestParameters object.
final params = ConsentRequestParameters();
// Request an update to consent information on every app launch.
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
if (loadAndShowError != null) {
// Consent gathering failed.
}
// Consent has been gathered.
});
},
(FormError error) {
// Handle the error.
},
);
}
Opções de privacidade
Alguns formulários de mensagens de privacidade são apresentados a partir de um ponto de entrada das opções de privacidade renderizado pelo editor, permitindo que os usuários gerenciem essas opções a qualquer momento. Para saber mais sobre qual mensagem é exibida aos seus usuários no ponto de entrada das opções de privacidade, consulte Tipos de mensagem do usuário disponíveis.
Verificar se um ponto de entrada de opções de privacidade é necessário
Depois de chamar requestConsentInfoUpdate()
, verifique getPrivacyOptionsRequirementStatus()
para
determinar se um ponto de entrada de opções de privacidade é necessário para o app:
/// Helper variable to determine if the privacy options entry point is required.
Future<bool> isPrivacyOptionsRequired() async {
return await ConsentInformation.instance
.getPrivacyOptionsRequirementStatus() ==
PrivacyOptionsRequirementStatus.required;
}
Adicionar um elemento visível ao app
Se um ponto de entrada de privacidade for necessário, adicione ao app um elemento de interface visível e interativo que apresente o formulário de opções de privacidade. Se um ponto de entrada de privacidade não for necessário, configure o elemento da interface para não ser visível e interativo.
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
if (loadAndShowError != null) {
// Consent gathering failed.
}
// Consent has been gathered.
// Redraw the app bar actions if a privacy options entry point is required.
if (await isPrivacyOptionsRequired()) {
setState(() {
_isPrivacyOptionsRequired = true;
});
}
});
},
// ...
Apresentar o formulário de opções de privacidade
Quando o usuário interagir com o elemento, apresente o formulário de opções de privacidade:
ConsentForm.showPrivacyOptionsForm((formError) {
if (formError != null) {
debugPrint("${formError.errorCode}: ${formError.message}");
}
});
Solicitar anúncios
Antes de solicitar anúncios no seu app, verifique se você recebeu o consentimento do usuário usando canRequestAds()
. Há dois
lugares para verificar ao coletar o consentimento:
- Depois que o consentimento foi coletado na sessão atual.
- Imediatamente após chamar
requestConsentInfoUpdate()
. É possível que o consentimento tenha sido dado na sessão anterior. Como prática recomendada para latência, recomendamos não esperar a conclusão do callback para que você possa começar a carregar anúncios assim que possível após o lançamento do app.
Se ocorrer um erro durante o processo de coleta de consentimento, ainda será necessário verificar se você pode solicitar anúncios. O SDK da UMP usa o status de consentimento da sessão anterior.
O código a seguir verifica se você pode solicitar anúncios durante o processo de coleta de consentimento:
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
if (loadAndShowError != null) {
// Consent gathering failed.
}
// Consent has been gathered.
if (await ConsentInformation.instance.canRequestAds()) {
_initializeGoogleMobileAdsSDK()
}
// ...
});
},
(FormError error) {},
);
// Check if you can initialize the Mobile Ads SDK in parallel while
// checking for new consent information. Consent obtained in the
// previous session can be used to request ads.
if (await ConsentInformation.instance.canRequestAds()) {
_initializeGoogleMobileAdsSDK()
}
O código abaixo configura o SDK dos anúncios para dispositivos móveis do Google depois que o consentimento do usuário é coletado:
void _initializeGoogleMobileAdsSDK() async {
if (_isMobileAdsInitializeCalled) {
return;
}
_isMobileAdsInitializeCalled = true;
// Initialize the Mobile Ads SDK.
MobileAds.instance.initialize();
// Load an ad.
_loadAd();
}
Teste
Se você quiser testar a integração no seu app durante o desenvolvimento, siga estas etapas para registrar o dispositivo de teste por programação. Remova o código que define esses IDs de dispositivo de teste antes de lançar o app.
- Ligue para a
requestConsentInfoUpdate()
. Verifique se há uma mensagem semelhante ao exemplo abaixo na saída do registro, que mostra o ID do dispositivo e como adicioná-lo como um dispositivo de teste:
Android
Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.
iOS
<UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
Copie o ID do dispositivo de teste para a área de transferência.
Modifique o código para chamar
ConsentDebugSettings.testIdentifiers
e transmitir uma lista dos IDs dos dispositivos de teste.ConsentDebugSettings debugSettings = ConsentDebugSettings( testIdentifiers: ["TEST-DEVICE-HASHED-ID"], ); ConsentRequestParameters params = ConsentRequestParameters(consentDebugSettings: debugSettings); ConsentInformation.instance.requestConsentInfoUpdate(params, () async { // ... };
Forçar uma região geográfica
O SDK da UMP oferece uma maneira de testar o comportamento do app como se o dispositivo
estivesse localizado em várias regiões, como o EEE ou o Reino Unido, usando
debugGeography
. As configurações de depuração só funcionam em dispositivos de teste.
ConsentDebugSettings debugSettings = ConsentDebugSettings(
debugGeography: DebugGeography.debugGeographyEea,
testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
);
ConsentRequestParameters params =
ConsentRequestParameters(consentDebugSettings: debugSettings);
ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
// ...
};
Redefinir o estado de consentimento
Ao testar seu app com o SDK da UMP, pode ser útil redefinir o
estado do SDK para que você possa simular a primeira experiência de instalação de um usuário.
O SDK fornece o método reset()
para fazer isso.
ConsentInformation.instance.reset();
Exemplos no GitHub
Confira um exemplo completo da integração do SDK do UMP abordado nesta página nos exemplos do Flutter.