Compartir a través de


Guía de solución de problemas de XAML y C#

Advertencia

A partir del 1 de junio de 2020, se cerrará la plataforma de monetización de anuncios de Microsoft para aplicaciones para UWP de Windows. Más información

Este tema contiene soluciones a problemas comunes de desarrollo con las bibliotecas de Microsoft Advertising en aplicaciones XAML.

XAML

AdControl no aparece

  1. Asegúrese de que la funcionalidad internet (cliente) está seleccionada en Package.appxmanifest.

  2. Compruebe el identificador de la aplicación y el identificador de unidad de anuncios. Estos identificadores deben coincidir con el identificador de aplicación y el identificador de unidad de anuncio que obtuvo en el Centro de partners. Para obtener más información, consulta Configurar unidades de anuncios en la aplicación.

    <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  3. Compruebe las propiedades Height y Width . Deben establecerse en uno de los tamaños de anuncios admitidos para los anuncios de banner.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  4. Compruebe la posición del elemento. AdControl debe estar dentro del área visible.

  5. Compruebe la propiedad Visibility . La propiedad Visibility opcional no debe establecerse en contraída o oculta. Esta propiedad se puede establecer insertada (como se muestra a continuación) o en una hoja de estilos externa.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Visibility="Visible"
                  Width="728" Height="90" />
    
  6. Compruebe el elemento primario de AdControl. Si el elemento AdControl reside en un elemento primario, el elemento primario debe estar activo y visible.

    <StackPanel>
        <UI:AdControl AdUnitId="{AdUnitID}"
                      ApplicationId="{ApplicationID}"
                      Width="728" Height="90" />
    </StackPanel>
    
  7. Asegúrese de que AdControl no está oculto en la ventanilla. AdControl debe estar visible para que los anuncios se muestren correctamente.

  8. Los valores dinámicos de ApplicationId y AdUnitId no deben probarse en el emulador. Para asegurarse de que AdControl funciona según lo previsto, use los valores de prueba para ApplicationId y AdUnitId.

  1. Compruebe todos los pasos de la sección anterior de AdControl que no aparece .

  2. Controla el evento ErrorOccurred y usa el mensaje que se pasa al controlador de eventos para determinar si se produjo un error y qué tipo de error se produjo. Consulta El tutorial Control de errores en XAML/C# para obtener más información.

    En este ejemplo se muestra un controlador de eventos ErrorOccurred . El primer fragmento de código es el marcado de la interfaz de usuario XAML.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  ErrorOccurred="adControl_ErrorOccurred" />
    <TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Width="500" Height="250" />
    

    En este ejemplo se muestra el código de C# correspondiente.

    private void adControl_ErrorOccurred(object sender,               
        Microsoft.Advertising.WinRT.UI.AdErrorEventArgs e)
    {
        TextBlock1.Text = e.ErrorMessage;
    }
    

    El error más común que provoca una caja negra es "No hay anuncios disponibles". Este error significa que no hay ningún anuncio disponible para devolver desde la solicitud.

  3. El AdControl se comporta normalmente.

    De forma predeterminada, AdControl se contraerá cuando no pueda mostrar un anuncio. Si otros elementos son elementos secundarios del mismo elemento primario, pueden desplazarse para rellenar el espacio del AdControl contraído y expandirse cuando se realiza la siguiente solicitud.

Anuncios que no se actualizan

  1. Compruebe la propiedad IsAutoRefreshEnabled . De forma predeterminada, esta propiedad opcional se establece en True. Cuando se establece en False, el método Refresh debe usarse para recuperar otro anuncio.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  IsAutoRefreshEnabled="True" />
    
  2. Compruebe las llamadas al método Refresh . Al usar la actualización automática, no se puede usar Refresh para recuperar otro anuncio. Al usar la actualización manual, solo se debe llamar a Refresh después de un mínimo de 30 a 60 segundos en función de la conexión de datos actual del dispositivo.

    Los fragmentos de código siguientes muestran un ejemplo de cómo usar el método Refresh . El primer fragmento de código es el marcado de la interfaz de usuario XAML.

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

    Este fragmento de código muestra un ejemplo del código de C# detrás del marcado de la interfaz de usuario.

    public RefreshAds()
    {
        var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) };
        timer.Tick += (s, e) => adControl1.Refresh();
        timer.Start();
    }
    
  3. El AdControl se comporta normalmente. A veces, el mismo anuncio aparecerá más de una vez en una fila dando la apariencia de que los anuncios no se actualizan.

C#

AdControl no aparece

  1. Asegúrese de que la funcionalidad internet (cliente) está seleccionada en Package.appxmanifest.

  2. Asegúrese de que se crea una instancia de AdControl . Si no se crea una instancia de AdControl , no estará disponible.

    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. Compruebe el identificador de la aplicación y el identificador de unidad de anuncios. Estos identificadores deben coincidir con el identificador de aplicación y el identificador de unidad de anuncio que obtuvo en el Centro de partners. Para obtener más información, consulta Configurar unidades de anuncios en la aplicación.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    
  4. Compruebe los parámetros Height y Width . Deben establecerse en uno de los tamaños de anuncios admitidos para los anuncios de banner.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;adControl.Width = 728;
    
  5. Asegúrese de que AdControl se agrega a un elemento primario. Para mostrar, AdControl debe agregarse como elemento secundario a un control primario (por ejemplo, stackPanel o Grid).

    ContentPanel.Children.Add(adControl);
    
  6. Compruebe el parámetro Margin . AdControl debe estar dentro del área visible.

  7. Compruebe la propiedad Visibility . La propiedad Visibility opcional debe establecerse en Visible.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    adControl.Visibility = System.Windows.Visibility.Visible;
    
  8. Compruebe el elemento primario de AdControl. El elemento primario debe estar activo y visible.

  9. Los valores dinámicos de ApplicationId y AdUnitId no deben probarse en el emulador. Para asegurarse de que AdControl funciona según lo previsto, use los valores de prueba para ApplicationId y AdUnitId.

  1. Compruebe todos los pasos de la sección AdControl anterior .

  2. Controla el evento ErrorOccurred y usa el mensaje que se pasa al controlador de eventos para determinar si se produjo un error y qué tipo de error se produjo. Consulta El tutorial Control de errores en XAML/C# para obtener más información.

    En los ejemplos siguientes se muestra el código básico necesario para implementar una llamada de error. Este código XAML define un TextBlock que se usa para mostrar el mensaje de error.

    <TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Width="500" Height="250" />
    

    Este código de C# recupera el mensaje de error y lo muestra en 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;
                };
            }
        }
    }
    

    El error más común que provoca una caja negra es "No hay anuncios disponibles". Este error significa que no hay ningún anuncio disponible para devolver desde la solicitud.

  3. AdControl se comporta normalmente. A veces, el mismo anuncio aparecerá más de una vez en una fila dando la apariencia de que los anuncios no se actualizan.

Anuncios que no se actualizan

  1. Compruebe si la propiedad IsAutoRefreshEnabled de su AdControl está establecida en false. De forma predeterminada, esta propiedad opcional se establece en true. Cuando se establece en false, el método Refresh debe usarse para recuperar otro anuncio.

  2. Compruebe las llamadas al método Refresh . Cuando se usa la actualización automática (IsAutoRefreshEnabled es true), no se puede usar Refresh para recuperar otro anuncio. Cuando se usa la actualización manual (IsAutoRefreshEnabled es false), solo se debe llamar a Refresh después de un mínimo de 30 a 60 segundos en función de la conexión de datos actual del dispositivo.

    En el ejemplo siguiente se muestra cómo llamar al 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();
    }
    
  3. El AdControl se comporta normalmente. A veces, el mismo anuncio aparecerá más de una vez en una fila dando la apariencia de que los anuncios no se actualizan.