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 JavaScript/HTML.
HTML
AdControl no aparece
Asegúrese de que la funcionalidad Internet (cliente) esté seleccionada en Package.appxmanifest.
Asegúrese de que la referencia de JavaScript está presente. Sin la referencia ad.js en la sección de< principal de >(después de la referencia default.js), el AdControl no podrá mostrarse y se producirá un error durante la compilación.
<head> ... <script src="//Microsoft.Advertising.JavaScript/ad.js"></script> ... </head>
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.
<div id="myAd" style="position: absolute; top: 50px; left: 0px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl" data-win-options="{applicationId: 'ApplicationID', adUnitId: 'AdUnitID'}"> </div>
Compruebe las propiedades de altura y de anchura . Deben establecerse en uno de los tamaños de anuncios admitidos para anuncios de banner.
<div id="myAd" style="position: absolute; top: 50px; left: 0px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl" data-win-options="{applicationId: 'ApplicationID', adUnitId: 'AdUnitID'}"> </div>
Compruebe el posicionamiento del elemento. El AdControl debe estar dentro del área visible.
Compruebe la propiedad de visibilidad de
. Esta propiedad no debe establecerse en contraída o oculta. Esta propiedad se puede establecer en línea (como se muestra a continuación) o en una hoja de estilos externa. <div id="myAd" style="visibility: visible; position: absolute; top: 1025px; left: 500px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl" data-win-options="{applicationId: 'ApplicationID', adUnitId: 'AdUnitID'}"> </div>
Compruebe la propiedad de posición . La propiedad position debe establecerse en un valor adecuado en función de las demás propiedades del elemento (por ejemplo, los márgenes del elemento primario y el índice z). Esta propiedad se puede establecer en línea (como se muestra a continuación) o en una hoja de estilos externa.
<div id="myAd" style="visibility: visible; position: absolute; top: 1025px; left: 500px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl" data-win-options="{applicationId: 'ApplicationID', adUnitId: 'AdUnitID'}"> </div>
Compruebe la propiedad z-index . La propiedad z-index debe establecerse lo suficientemente alta como para que el AdControl aparezca siempre encima de otros elementos. Esta propiedad se puede establecer en línea (como se muestra a continuación) o en una hoja de estilos externa.
<div id="myAd" style="visibility: visible; position: absolute; top: 1025px; left: 500px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl" data-win-options="{applicationId: 'ApplicationID', adUnitId: 'AdUnitID'}"> </div>
Compruebe las hojas de estilos externas. Si las propiedades se establecen en el elemento AdControl a través de una hoja de estilos externa, asegúrese de que todas las propiedades anteriores se establecen correctamente.
<div id="myAd" style="visibility: visible; position: absolute; top: 1025px; left: 500px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl" data-win-options="{applicationId: 'ApplicationID', adUnitId: 'AdUnitID'}"> </div>
Compruebe el elemento padre del AdControl. Si el AdControl reside en un elemento primario, el elemento primario debe estar activo y visible.
<div style="position: absolute; width: 500px; height: 500px;"> <div id="myAd" style="position: relative; top: 0px; left: 100px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl" data-win-options="{applicationId: 'ApplicationID', adUnitId: 'AdUnitID'}"> </div> </div>
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 onErrorOccurred y utilice el mensaje que se pasa al controlador para determinar si ocurrió un error y qué tipo de error fue lanzado. Puede encontrar más detalles en Control de errores en el tutorial de JavaScript.
<div id="myAd" style="position: absolute; top: 0px; left: 0px; width: 728px; height: 90px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl" data-win-options="{applicationId: 'ApplicationID', adUnitId: 'AdUnitID', onErrorOccurred: errorLogger}"> </div> <div style="position:absolute; width:100%; height:130px; top:300px; left:0px"> <b>Ad Events</b><br /> <div id="adEvents" style="width:100%; height:110px; overflow:auto"></div> </div>
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, se debe usar el método refresh para recuperar otro anuncio.
<div id="myAd" style="position: absolute; top: 0px; left: 0px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl" data-win-options="{ applicationId: 'ApplicationID', adUnitId: 'AdUnitID', onErrorOccurred: errorLogger, isAutoRefreshEnabled: true}"> </div>
Compruebe las llamadas al método de refresco. Al usar la actualización automática, no se puede usar para obtener otro anuncio. Al usar la actualización manual, se debe llamar a actualizar solo después de un mínimo de 30 a 60 segundos, según la conexión de datos actual del dispositivo.
En este ejemplo se muestra cómo usar el método de actualización . En el código HTML siguiente se muestra un ejemplo de cómo crear una instancia del AdControl con isAutoRefreshEnabled establecido en false.
<div id="myAd" style="position: absolute; top: 0px; left: 0px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl" data-win-options="{ applicationId: 'ApplicationID', adUnitId: 'AdUnitID', onErrorOccurred: errorLogger, isAutoRefreshEnabled: false}"> </div>
En este ejemplo se demuestra cómo usar la función refrescar.
args.setPromise(WinJS.UI.processAll() .then(function (args) { window.setInterval(function() { document.getElementById("myAd").winControl.refresh(); }, 60000) }) );
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.
JavaScript
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 se instancia. no estará disponible.
Los fragmentos de código siguientes muestran un ejemplo de creación de instancias del AdControl. Este código HTML muestra un ejemplo de cómo configurar la interfaz de usuario para el AdControl
<div id="myAd" style="position: absolute; top: 0px; left: 0px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl"> </div>
En el código JavaScript siguiente se muestra un ejemplo de creación de instancias del AdControl
app.onactivated = function (args) { if (args.detail.kind === activation.ActivationKind.launch) { if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) { var adDiv = document.getElementById("myAd"); var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}" }); myAdControl.onErrorOccurred = myAdError; } else { ... } } }
Compruebe el elemento primario. El padre <div> debe estar asignado correctamente, activo y visible.
var adDiv = document.getElementById("myAd"); var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}" });
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.
var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}" });
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
Verifique nuevamente todos los pasos de la sección AdControl que no aparece.
Controle el evento onErrorOccurred y utilice el mensaje que se pasa al controlador para determinar si ocurrió un error y qué tipo de error fue lanzado. Puede encontrar más detalles en Control de errores en el tutorial de JavaScript.
En este ejemplo se muestra cómo implementar un controlador de errores que notifica mensajes de error. Este fragmento de código HTML proporciona un ejemplo de cómo configurar la interfaz de usuario para mostrar mensajes de error.
<div style="position:absolute; width:100%; height:130px; top:300px"> <b>Ad Events</b><br /> <div id="adEvents" style="width:100%; height:110px; overflow:auto"></div> </div>
En este ejemplo se muestra cómo crear instancias del AdControl. Esta función se insertaría en el archivo app.onactivated.
var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}" }); myAdControl.onErrorOccurred = myAdError;
En este ejemplo se muestra cómo notificar errores. Esta función se insertaría debajo de la función de ejecución automática en el archivo default.js.
WinJS.Utilities.markSupportedForProcessing ( window.errorLogger = function (sender, evt) { adEvents.innerHTML = (new Date()).toLocaleTimeString() + ": " + sender.element.id + " error: " + evt.errorMessage + " error code: " + evt.errorCode + "<br>" + adEvents.innerHTML; } );
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. 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 este ejemplo se muestra cómo crear el div de
para el AdControl .<div id="myAd" style="position: absolute; top: 0px; left: 0px; width: 250px; height: 250px; z-index: 1" data-win-control="MicrosoftNSJS.Advertising.AdControl"> </div>
En este ejemplo se muestra cómo usar la función Actualizar
var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}", isAutoRefreshEnabled: false }); ... args.setPromise(WinJS.UI.processAll() .then(function (args) { window.setInterval(function() { document.getElementById("myAd").winControl.refresh(); }, 60000) }) );
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.