Guia de solução de problemas de XAML e C#
Aviso
A partir de 1.º de junho de 2020, a plataforma de monetização de anúncios da Microsoft para aplicativos UWP do Windows será encerrada. Saiba mais
Este tópico contém soluções para problemas comuns de desenvolvimento com as bibliotecas do Microsoft Advertising em aplicativos XAML.
XAML
AdControl não aparece
Verifique se a funcionalidade Internet (Cliente) está selecionada em Package.appxmanifest.
Verifique o ID do aplicativo e o ID do bloco de anúncios. Essas IDs devem corresponder à ID do aplicativo e à ID da unidade de anúncio que você obteve no Partner Center. Para obter mais informações, consulte Configurar blocos de anúncios no seu aplicativo.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" />
Verifique as propriedades Height e Width . Eles devem ser definidos como um dos tamanhos de anúncio compatíveis para anúncios em banner.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" />
Verifique a posição do elemento. O AdControl deve estar dentro da área visível.
Verifique a propriedade Visibilidade . A propriedade opcional Visibility não deve ser definida como recolhida ou oculta. Essa propriedade pode ser definida embutida (conforme mostrado abaixo) ou em uma folha de estilos externa.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Visibility="Visible" Width="728" Height="90" />
Verifique o pai do AdControl. Se o elemento AdControl residir em um elemento pai, o pai deverá estar ativo e visível.
<StackPanel> <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" /> </StackPanel>
Certifique-se de que o AdControl não esteja oculto da janela de visualização. O AdControl deve estar visível para que os anúncios sejam exibidos corretamente.
Os valores dinâmicos para ApplicationId e AdUnitId não devem ser testados no emulador. Para garantir que o AdControl esteja funcionando conforme o esperado, use os valores de teste para ApplicationId e AdUnitId.
Caixa preta pisca e desaparece
Verifique novamente todas as etapas na seção anterior AdControl não aparecendo .
Manipule o evento ErrorOccurred e use a mensagem que é passada para o manipulador de eventos para determinar se ocorreu um erro e que tipo de erro foi gerado. Consulte o tratamento de erros no passo a passo XAML/C# para obter mais informações.
Este exemplo demonstra um manipulador de eventos ErrorOccurred . O primeiro snippet é a marcação da interface do usuário XAML.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" ErrorOccurred="adControl_ErrorOccurred" /> <TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Width="500" Height="250" />
Este exemplo demonstra o código C# correspondente.
private void adControl_ErrorOccurred(object sender, Microsoft.Advertising.WinRT.UI.AdErrorEventArgs e) { TextBlock1.Text = e.ErrorMessage; }
O erro mais comum que causa uma caixa preta é "Nenhum anúncio disponível". Esse erro significa que não há anúncio disponível para retornar da solicitação.
O AdControl está se comportando normalmente.
Por padrão, o AdControl será recolhido quando não puder exibir um anúncio. Se outros elementos forem filhos do mesmo pai, eles poderão se mover para preencher a lacuna do AdControl recolhido e expandir quando a próxima solicitação for feita.
Anúncios não são atualizados
Verifique a propriedade IsAutoRefreshEnabled . Por padrão, essa propriedade opcional é definida como True. Quando definido como False, o método Refresh deve ser usado para recuperar outro anúncio.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" IsAutoRefreshEnabled="True" />
Verifique as chamadas para o método Refresh . Ao usar a atualização automática, a atualização não pode ser usada para recuperar outro anúncio. Ao usar a atualização manual, a atualização deve ser chamada somente após um mínimo de 30 a 60 segundos, dependendo da conexão de dados atual do dispositivo.
Os snippets de código a seguir mostram um exemplo de como usar o método Refresh . O primeiro snippet é a marcação da interface do usuário XAML.
<UI:AdControl x:Name="adControl1" AdUnitId="{AdUnit_ID}" ApplicationId="{ApplicationID}" Width="728" Height="90" IsAutoRefreshEnabled="False" />
Este snippet de código mostra um exemplo do código C# por trás da marcação da interface do usuário.
public RefreshAds() { var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) }; timer.Tick += (s, e) => adControl1.Refresh(); timer.Start(); }
O AdControl está se comportando normalmente. Às vezes, o mesmo anúncio será exibido mais de uma vez seguida, dando a impressão de que os anúncios não são atualizados.
C#
AdControl não aparece
Verifique se a funcionalidade Internet (Cliente) está selecionada em Package.appxmanifest.
Verifique se o AdControl foi instanciado. Se o AdControl não for instanciado, ele não estará disponível.
using Microsoft.Advertising.WinRT.UI; namespace AdControlExample { public sealed partial class MainPage : Page { AdControl myAdControl; public MainPage() { this.InitializeComponent(); myAdControl = new AdControl() { ApplicationId = "{ApplicationID}", AdUnitId = "{AdUnitID}", Height = 90, Width = 728 }; } } }
Verifique o ID do aplicativo e o ID do bloco de anúncios. Essas IDs devem corresponder à ID do aplicativo e à ID da unidade de anúncio que você obteve no Partner Center. Para obter mais informações, consulte Configurar blocos de anúncios no seu aplicativo.
adControl = new AdControl(); adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}"; adControl.Height = 90; adControl.Width = 728;
Verifique os parâmetros Altura e Largura . Eles devem ser definidos como um dos tamanhos de anúncio compatíveis com anúncios em banner.
adControl = new AdControl(); adControl.ApplicationId = "{ApplicationID}"; adControl.AdUnitId = "{AdUnitID}"; adControl.Height = 90;adControl.Width = 728;
Verifique se o AdControl foi adicionado a um elemento pai. Para exibir, o AdControl deve ser adicionado como filho a um controle pai (por exemplo, um StackPanel ou Grid).
ContentPanel.Children.Add(adControl);
Verifique o parâmetro Margem . O AdControl deve estar dentro da área visível.
Verifique a propriedade Visibilidade . A propriedade opcional Visibility deve ser definida como Visible.
adControl = new AdControl(); adControl.ApplicationId = "{ApplicationID}"; adControl.AdUnitId = "{AdUnitID}"; adControl.Height = 90; adControl.Width = 728; adControl.Visibility = System.Windows.Visibility.Visible;
Verifique o pai do AdControl. O pai deve estar ativo e visível.
Os valores dinâmicos para ApplicationId e AdUnitId não devem ser testados no emulador. Para garantir que o AdControl esteja funcionando conforme o esperado, use os valores de teste para ApplicationId e AdUnitId.
Caixa preta pisca e desaparece
Verifique novamente todas as etapas na seção AdControl que não aparece acima.
Manipule o evento ErrorOccurred e use a mensagem que é passada para o manipulador de eventos para determinar se ocorreu um erro e que tipo de erro foi gerado. Consulte o tratamento de erros no passo a passo XAML/C# para obter mais informações.
Os exemplos a seguir mostram o código básico necessário para implementar uma chamada de erro. Esse código XAML define um TextBlock que é usado para exibir a mensagem de erro.
<TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Width="500" Height="250" />
Esse código C# recupera a mensagem de erro e a exibe no TextBlock.
using Microsoft.Advertising.WinRT.UI; namespace AdControlExample { public partial class MainPage : Page { AdControl myAdControl; public MainPage() { this.InitializeComponent(); myAdControl = new AdControl(); myAdControl.ApplicationId = "{ApplicationID}"; myAdControl.AdUnitId = "{AdUnitID}"; myAdControl.Height = 90; myAdControl.Width = 728; myAdControl.ErrorOccurred += (s,e) => { TextBlock1.Text = e.Error.Message; }; } } }
O erro mais comum que causa uma caixa preta é "Nenhum anúncio disponível". Esse erro significa que não há anúncio disponível para retornar da solicitação.
O AdControl está se comportando normalmente. Às vezes, o mesmo anúncio será exibido mais de uma vez seguida, dando a impressão de que os anúncios não são atualizados.
Anúncios não são atualizados
Verifique se a propriedade IsAutoRefreshEnabled do AdControl está definida como false. Por padrão, essa propriedade opcional é definida como true. Quando definido como false, o método Refresh deve ser usado para recuperar outro anúncio.
Verifique as chamadas para o método Refresh . Ao usar a atualização automática (IsAutoRefreshEnabled é true), a atualização não pode ser usada para recuperar outro anúncio. Ao usar a atualização manual (IsAutoRefreshEnabled é false), a atualização deve ser chamada somente após um mínimo de 30 a 60 segundos, dependendo da conexão de dados atual do dispositivo.
O exemplo a seguir demonstra como chamar o método Refresh .
AdControl myAdControl; public MainPage() { InitializeComponent(); myAdControl = new AdControl(); myAdControl.ApplicationId = "{ApplicationID}"; myAdControl.AdUnitId = "{AdUnitID}"; myAdControl.Height = 90; myAdControl.Width = 728; myAdControl.IsAutoRefreshEnabled = false; ContentPanel.Children.Add(myAdControl); var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) }; timer.Tick += (s, e) => myAdControl.Refresh(); timer.Start(); }
O AdControl está se comportando normalmente. Às vezes, o mesmo anúncio será exibido mais de uma vez seguida, dando a impressão de que os anúncios não são atualizados.