Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Advertencia
A partir del 1 de junio de 2020, se apagará la plataforma de monetización de Microsoft Ad para aplicaciones para UWP de Windows. Aprende más
Este tema contiene soluciones a problemas comunes de desarrollo con las bibliotecas de Microsoft Advertising en aplicaciones XAML.
XAML
AdControl no aparece
Asegúrese de que la funcionalidad Internet (cliente) esté seleccionada en Package.appxmanifest.
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 socios. Para obtener más información, consulta Configurar unidades de anuncios en tu aplicación.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" />
Compruebe las propiedades Height y Width. Deben establecerse en uno de los tamaños de anuncio admitidos de para los anuncios de banner.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" />
Compruebe la posición del elemento. El AdControl debe estar dentro del área visible.
Compruebe la propiedad Visibility. La propiedad opcional Visibility no debe establecerse como colapsada ni como oculta. Esta propiedad se puede establecer en línea (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" />
Compruebe el elemento padre del AdControl. Si el elemento AdControl reside en un elemento primario, este debe estar activo y ser visible.
<StackPanel> <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" /> </StackPanel>
Asegúrese de que el AdControl no está oculto en el viewport. El AdControl debe estar visible para que los anuncios se muestren correctamente.
Los valores dinámicos de ApplicationId y AdUnitId no deben probarse en el emulador. Para asegurarse de que el AdControl funciona como se espera, use los valores de prueba para ApplicationId y AdUnitId .
La caja negra parpadea y desaparece
Revisa todos los pasos de la sección anterior AdControl que no aparece.
Controle el evento ErrorOccurred y use el mensaje que se pasa al controlador de eventos para determinar si se produjo un error y qué tipo de error se produjo. Consulte Tutorial de control de errores en XAML/C# para obtener más información.
En este ejemplo se muestra un controlador de eventos de 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 en respuesta a la solicitud.
El AdControl se comporta normalmente.
De forma predeterminada, el AdControl se contraerá cuando no pueda mostrar un anuncio. Si otros elementos son hijos del mismo padre, pueden desplazarse para llenar el espacio dejado por el AdControl al colapsar y expandirse con la siguiente solicitud.
Anuncios que no se actualizan
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" />
Compruebe las llamadas al método Refresh. Al usar la autoactualización, Refrescar no se puede usar para obtener otro anuncio. Al usar la actualización manual, solo se debe llamar a Actualizar 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(); }
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
Asegúrese de que la funcionalidad Internet (cliente) esté seleccionada en Package.appxmanifest.
Asegúrese de que el AdControl esté instanciado. Si el AdControl no está instanciado, 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 }; } } }
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 socios. Para obtener más información, consulta Configurar unidades de anuncios en tu aplicación.
adControl = new AdControl(); adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}"; adControl.Height = 90; adControl.Width = 728;
Compruebe los parámetros Height y Width. Deben establecerse en uno de los tamaños de anuncios admitidos para anuncios de banner.
adControl = new AdControl(); adControl.ApplicationId = "{ApplicationID}"; adControl.AdUnitId = "{AdUnitID}"; adControl.Height = 90;adControl.Width = 728;
Asegúrese de que el AdControl se añada a un elemento primario. Para que se muestre, el AdControl debe añadirse como hijo a un control primario (por ejemplo, un StackPanel o Grid).
ContentPanel.Children.Add(adControl);
Compruebe el parámetro margen de
. El AdControl debe estar dentro del área visible. Compruebe la propiedad Visibility. La propiedad opcional Visibility 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;
Compruebe el elemento padre del AdControl. El padre debe estar activo y visible.
Los valores dinámicos de ApplicationId y AdUnitId no deben probarse en el emulador. Para asegurarse de que el AdControl funciona como se espera, use los valores de prueba para ApplicationId y AdUnitId .
La caja negra parpadea y desaparece
Asegúrese de verificar todos los pasos de la sección anterior en la que el AdControl no aparece.
Controle el evento ErrorOccurred y use el mensaje que se pasa al controlador de eventos para determinar si se produjo un error y qué tipo de error se produjo. Consulte Tutorial de 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 el 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 en respuesta a la solicitud.
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
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.
Compruebe las llamadas al método Refresh. Al usar la actualización automática (IsAutoRefreshEnabled es true), no se puede usar Refresh para recuperar otro anuncio. Cuando se utiliza la actualización manual (isAutoRefreshEnabled es false), se debería llamar a Refresh solo después de un mínimo de entre 30 y 60 segundos, dependiendo 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(); }
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.