Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Avvertimento
A partire dal 1° giugno 2020, la piattaforma Microsoft Ad Monetization per le app Windows UWP verrà dismessa. Ulteriori informazioni
Questo argomento contiene soluzioni ai problemi di sviluppo comuni relativi alle librerie Microsoft Advertising nelle app JavaScript/HTML.
HTML
AdControl non viene visualizzato
Assicurarsi che la funzionalità Internet (Client) sia selezionata in Package.appxmanifest.
Verificare che il riferimento a JavaScript sia presente. Senza il riferimento ad.js nella sezione
head (dopo il riferimento default.js) il AdControl non sarà in grado di visualizzare e si verificherà un errore durante la compilazione. <head> ... <script src="//Microsoft.Advertising.JavaScript/ad.js"></script> ... </head>
Controllare l'ID dell'applicazione e l'ID dell'unità pubblicitaria. Questi ID devono corrispondere all'ID applicazione e all'ID unità pubblicitaria ottenuti nel Centro per i partner. Per ulteriori informazioni, vedere Impostare le unità pubblicitarie nell'app.
<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>
Controllare le proprietà di altezza e larghezza . Questi elementi devono essere impostati su una delle dimensioni pubblicitarie supportate per gli annunci 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>
Controllare il posizionamento dell'elemento. Il AdControl deve trovarsi all'interno dell'area visualizzabile.
Controllare la proprietà di visibilità . Questa proprietà non deve essere impostata su compresso o nascosto. Questa proprietà può essere impostata in linea (come illustrato di seguito) o in un foglio di stile esterno.
<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>
Controllare la posizione della proprietà. La proprietà position deve essere impostata su un valore appropriato a seconda delle altre proprietà dell'elemento, ad esempio margini nell'elemento padre e nell'indice z. Questa proprietà può essere impostata in linea (come illustrato di seguito) o in un foglio di stile esterno.
<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>
Controllare la proprietà dell'indice z . La proprietà indice z deve essere impostata su un valore sufficientemente elevato, in modo che il AdControl sia sempre visualizzato sopra gli altri elementi. Questa proprietà può essere impostata in linea (come illustrato di seguito) o in un foglio di stile esterno.
<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>
Controllare i fogli di stile esterni. Se le proprietà vengono impostate nell'elemento AdControl tramite un foglio di stile esterno, assicurarsi che tutte le proprietà precedenti siano impostate correttamente.
<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>
Controllare l'elemento padre del AdControl. Se il AdControl risiede in un elemento padre, l'elemento padre deve essere attivo e visibile.
<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>
Verificare che il AdControl non sia nascosto dal viewport. Il AdControl deve essere visibile affinché gli annunci vengano visualizzati correttamente.
I valori live per ApplicationId e AdUnitId non devono essere testati nell'emulatore. Per assicurarsi che la AdControl
funzioni come previsto, usare i valori di test sia per ApplicationId che perAdUnitId .
La scatola nera lampeggia e scompare
Ricontrollare tutti i passaggi nella sezione precedente in cui l'AdControl non viene visualizzata.
Gestire l'evento onErrorOccurred e usare il messaggio passato al gestore eventi per determinare se si è verificato un errore e quale tipo di errore è stato generato. Per altri dettagli, vedere Gestione degli errori nella guida pratica 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>
L'errore più comune che causa una casella nera è "Nessun annuncio disponibile". Questo errore indica che non è disponibile alcun annuncio a seguito della richiesta.
Il AdControl si comporta normalmente. Per impostazione predefinita, il AdControl si riduce automaticamente quando non può visualizzare un annuncio. Se altri elementi sono figli dello stesso padre, possono spostarsi per riempire lo spazio dell'AdControl compresso ed espandersi quando si effettua la richiesta successiva.
Annunci non aggiornati
Controllare che la proprietà isAutoRefreshEnabled sia. Per impostazione predefinita, questa proprietà facoltativa è impostata su true. Se impostato su false, il metodo aggiorna deve essere usato per ottenere un altro annuncio.
<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>
Controllare le chiamate al metodo di aggiornamento. Quando si usa l'aggiornamento automatico, l'aggiornamento non può essere utilizzato per recuperare un altro annuncio. Quando si utilizza il refresh manuale, refresh deve essere chiamato solo dopo un minimo di 30-60 secondi, in base alla connessione dati attuale del dispositivo.
In questo esempio viene illustrato come utilizzare il metodo refresh . Il codice HTML seguente mostra un esempio di come creare un'istanza del AdControl con isAutoRefreshEnabled impostato su 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>
Nell'esempio seguente viene illustrato come usare la funzione di aggiornamento .
args.setPromise(WinJS.UI.processAll() .then(function (args) { window.setInterval(function() { document.getElementById("myAd").winControl.refresh(); }, 60000) }) );
Il AdControl si comporta normalmente. A volte lo stesso annuncio apparirà più volte di seguito, dando l'impressione che gli annunci non vengano aggiornati.
JavaScript
AdControl non viene visualizzato
Assicurarsi che la funzionalità Internet (Client) sia selezionata in Package.appxmanifest.
Verificare che l'AdControl sia istanziato. Se il AdControl non è istanziato. non sarà disponibile.
I frammenti di codice seguenti illustrano un esempio di creazione di un'istanza del AdControl. Questo codice HTML mostra un esempio di configurazione dell'interfaccia utente per il 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>
Il codice JavaScript seguente illustra un esempio di creazione di un'istanza 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 { ... } } }
Controllare l'elemento padre. Il div <padre> deve essere assegnato correttamente, attivo e visibile.
var adDiv = document.getElementById("myAd"); var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}" });
Controllare l'ID dell'applicazione e l'ID dell'unità pubblicitaria. Questi ID devono corrispondere all'ID applicazione e all'ID unità pubblicitaria ottenuti nel Centro per i partner. Per ulteriori informazioni, vedere Impostare le unità pubblicitarie nell'app.
var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}" });
Controllare l'elemento padre dell'AdControl . L'elemento padre deve essere attivo e visibile.
I valori live per ApplicationId e AdUnitId non devono essere testati nell'emulatore. Per assicurarsi che la AdControl
funzioni come previsto, usare i valori di test sia per ApplicationId che perAdUnitId .
La scatola nera lampeggia e scompare
Assicurarsi di controllare tutti i passaggi nella sezione quando AdControl non viene visualizzato.
Gestire l'evento onErrorOccurred e usare il messaggio passato al gestore eventi per determinare se si è verificato un errore e quale tipo di errore è stato generato. Per altri dettagli, vedere Gestione degli errori nella guida pratica JavaScript.
In questo esempio viene illustrato come implementare un gestore errori che segnala i messaggi di errore. Questo frammento di codice HTML fornisce un esempio di come configurare l'interfaccia utente per visualizzare i messaggi di errore.
<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>
In questo esempio viene illustrato come creare un'istanza del AdControl. Questa funzione verrà inserita nel file app.onactivated.
var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}" }); myAdControl.onErrorOccurred = myAdError;
In questo esempio viene illustrato come segnalare gli errori. Questa funzione verrà inserita sotto la funzione self-running nel file 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; } );
L'errore più comune che causa una casella nera è "Nessun annuncio disponibile". Questo errore indica che non è disponibile alcun annuncio a seguito della richiesta.
Il AdControl si comporta normalmente. A volte lo stesso annuncio apparirà più volte di seguito, dando l'impressione che gli annunci non vengano aggiornati.
Annunci non aggiornati
Controllare se la proprietà IsAutoRefreshEnabled del AdControl è impostata su false. Per impostazione predefinita, questa proprietà facoltativa è impostata su true. Se impostato su false, il metodo Refresh deve essere utilizzato per recuperare un altro annuncio.
Controllare le chiamate al metodo Refresh. Quando si usa l'aggiornamento automatico (IsAutoRefreshEnabled è true), non è possibile usare Refresh per recuperare un altro annuncio. Quando si usa l'aggiornamento manuale (IsAutoRefreshEnabled è false), Refresh deve essere chiamato solo dopo un intervallo minimo di 30-60 secondi a seconda della connessione dati corrente del dispositivo.
In questo esempio viene illustrato come creare il div per il 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>
In questo esempio viene illustrato come usare la funzione Refresh
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) }) );
Il AdControl si comporta normalmente. A volte lo stesso annuncio apparirà più volte di seguito, dando l'impressione che gli annunci non vengano aggiornati.