Partilhar via


Guia de solução de problemas de XAML e C#

Advertência

A partir de 1º de junho de 2020, a plataforma Microsoft Ad Monetization para aplicativos UWP do Windows será encerrada. Mais informações

Este tópico contém soluções para problemas comuns de desenvolvimento com as bibliotecas de publicidade da Microsoft em aplicativos XAML.

XAML

AdControl não aparece

  1. Verifique se o recurso Internet (Cliente) está selecionado em Package.appxmanifest.

  2. Verifique o ID do aplicativo e o ID do bloco de anúncios. Esses IDs devem corresponder ao ID do aplicativo e ao ID do bloco de anúncios obtidos no Partner Center. Para obter mais informações, consulte Configurar blocos de anúncios na sua aplicação.

    <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  3. Verifique as propriedades Altura e Largura. Eles devem ser definidos como um dos tamanhos de anúncios suportados para anúncios de banner.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  4. Verifique a posição do elemento. O AdControl deve estar dentro da área visível.

  5. Verifique a Visibilidade propriedade. A propriedade opcional Visibility não pode ser definida como recolhida ou oculta. Esta propriedade pode ser definida em linha (como mostrado abaixo) ou em uma folha de estilos externa.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Visibility="Visible"
                  Width="728" Height="90" />
    
  6. Verifique o elemento pai do AdControl. Se o elemento AdControl reside em um elemento pai, o pai deve estar ativo e visível.

    <StackPanel>
        <UI:AdControl AdUnitId="{AdUnitID}"
                      ApplicationId="{ApplicationID}"
                      Width="728" Height="90" />
    </StackPanel>
    
  7. 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.

  8. Os valores em tempo real para ApplicationId e AdUnitId não devem ser testados no emulador. Para garantir que o AdControl esteja a funcionar como esperado, use os valores de teste tanto para o ApplicationId como para o AdUnitId.

  1. Verifique novamente todas as etapas na seção anterior AdControl não aparecer.

  2. Manipule o evento ErrorOccurred e use a mensagem que é passada para o gestor de eventos para determinar se ocorreu um erro e que tipo de erro foi gerado. Consulte Tratamento de erros em XAML/C# passo a passo para obter mais informações.

    Este exemplo demonstra um manipulador de eventos ErrorOccurred. O primeiro trecho é a marcação XAML da UI.

    <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". Este erro significa que não há nenhum anúncio disponível para responder ao pedido.

  3. O AdControl está se comportando normalmente.

    Por padrão, o AdControl será ocultado quando não puder exibir um anúncio. Se outros elementos forem filhos do mesmo pai, eles podem mover-se para preencher a lacuna do AdControl recolhido e expandir quando a próxima solicitação for feita.

Anúncios que não são atualizados

  1. 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" />
    
  2. Verifique as chamadas para o método Refresh. Quando se usa a atualização automática, Refresh não pode ser usada para recuperar outro anúncio. Ao usar a atualização manual, Refresh deve ser chamada somente após um mínimo de 30 a 60 segundos, dependendo da conexão de dados atual do dispositivo.

    Os trechos de código a seguir mostram um exemplo de como usar o método Refresh. O primeiro trecho é a marcação XAML da UI.

    <UI:AdControl x:Name="adControl1"
                  AdUnitId="{AdUnit_ID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  IsAutoRefreshEnabled="False" />
    

    Este trecho 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();
    }
    
  3. O AdControl está se comportando normalmente. Às vezes, o mesmo anúncio é exibido mais de uma vez seguida, dando a impressão de que os anúncios não estão sendo atualizados.

C#

AdControl não aparece

  1. Verifique se o recurso Internet (Cliente) está selecionado em Package.appxmanifest.

  2. Assegure-se de que o AdControl está 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
                };
            }
        }
    }
    
  3. Verifique o ID do aplicativo e o ID do bloco de anúncios. Esses IDs devem corresponder ao ID do aplicativo e ao ID do bloco de anúncios obtidos no Partner Center. Para obter mais informações, consulte Configurar blocos de anúncios na sua aplicação.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    
  4. Verifique os parâmetros Altura e Largura . Eles devem ser definidos como um dos tamanhos de anúncio suportados para anúncios de banner.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;adControl.Width = 728;
    
  5. 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);
    
  6. Verifique o parâmetro Margin. O AdControl deve estar dentro da área visível.

  7. Verifique a Visibilidade propriedade. 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;
    
  8. Verifique o elemento pai do AdControl. O pai deve estar ativo e visível.

  9. Os valores em tempo real para ApplicationId e AdUnitId não devem ser testados no emulador. Para garantir que o AdControl esteja a funcionar como esperado, use os valores de teste tanto para o ApplicationId como para o AdUnitId.

  1. Revise atentamente todos os passos na seção sobre AdControl não aparecer acima.

  2. Manipule o evento ErrorOccurred e use a mensagem que é passada para o gestor de eventos para determinar se ocorreu um erro e que tipo de erro foi gerado. Consulte Tratamento de erros em XAML/C# passo a passo 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". Este erro significa que não há nenhum anúncio disponível para responder ao pedido.

  3. AdControl está a comportar-se normalmente. Às vezes, o mesmo anúncio é exibido mais de uma vez seguida, dando a impressão de que os anúncios não estão sendo atualizados.

Anúncios que não são atualizados

  1. Verifique se a propriedade IsAutoRefreshEnabled do seu AdControl está definida como false. Por padrão, essa propriedade opcional é definida como true. Quando definido como falso, o método Refresh deve ser usado para recuperar outro anúncio.

  2. Verifique as chamadas para o método Refresh. Ao utilizar a atualização automática (IsAutoRefreshEnabled é verdadeiro), não é possível usar Atualizar para recuperar outro anúncio. Ao usar a atualização manual (IsAutoRefreshEnabled é falso), a função de atualização deve ser chamada apenas após um intervalo mínimo de 30 a 60 segundos, dependendo da conexão de dados atual do dispositivo.

    O exemplo a seguir demonstra como chamar o Refresh método.

    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();
    }
    
  3. O AdControl está se comportando normalmente. Às vezes, o mesmo anúncio é exibido mais de uma vez seguida, dando a impressão de que os anúncios não estão sendo atualizados.