Handbuch zur Problembehandlung für HTML und JavaScript
Warnung
Ab dem 1. Juni 2020 wird die Microsoft Ad Monetization-Plattform für Windows UWP-Apps abgeschaltet. Weitere Informationen
Dieses Thema enthält Lösungen für allgemeine Entwicklungsprobleme mit den Microsoft Advertising-Bibliotheken in JavaScript/HTML-Apps.
HTML
AdControl wird nicht angezeigt
Stellen Sie sicher, dass die Internetfunktion (Client) in "Package.appxmanifest" ausgewählt ist.
Stellen Sie sicher, dass der JavaScript-Verweis vorhanden ist. Ohne den ad.js Verweis im <Kopfabschnitt> (nach dem default.js Verweis) kann adControl nicht angezeigt werden, und während des Builds tritt ein Fehler auf.
<head> ... <script src="//Microsoft.Advertising.JavaScript/ad.js"></script> ... </head>
Überprüfen Sie die Anwendungs-ID und die Anzeigeneinheits-ID. Diese IDs müssen mit der Anwendungs-ID und der Anzeigeneinheits-ID übereinstimmen, die Sie im Partner Center erhalten haben. Weitere Informationen finden Sie unter Einrichten von Anzeigeneinheiten in Ihrer 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>
Überprüfen Sie die Eigenschaften für Höhe und Breite . Diese müssen auf eine der unterstützten Anzeigengrößen für Banneranzeigen festgelegt werden.
<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>
Überprüfen Sie die Elementpositionierung. Das AdControl muss sich innerhalb des sichtbaren Bereichs befinden.
Überprüfen Sie die Sichtbarkeitseigenschaft . Diese Eigenschaft darf nicht auf reduziert oder ausgeblendet festgelegt werden. Diese Eigenschaft kann inline (wie unten dargestellt) oder in einem externen Stylesheet festgelegt werden.
<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>
Überprüfen Sie die Position-Eigenschaft . Die Positionseigenschaft muss abhängig von den anderen Eigenschaften des Elements auf einen geeigneten Wert festgelegt werden (z. B. Ränder im übergeordneten Element und Z-Index). Diese Eigenschaft kann inline (wie unten dargestellt) oder in einem externen Stylesheet festgelegt werden.
<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>
Überprüfen Sie die Z-Index-Eigenschaft . Die Z-Index-Eigenschaft muss hoch genug festgelegt werden, damit adControl immer über anderen Elementen angezeigt wird. Diese Eigenschaft kann inline (wie unten dargestellt) oder in einem externen Stylesheet festgelegt werden.
<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>
Überprüfen Sie externe Stylesheets. Wenn Eigenschaften für das AdControl-Element über ein externes Stylesheet festgelegt werden, stellen Sie sicher, dass alle oben genannten Eigenschaften ordnungsgemäß festgelegt sind.
<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>
Überprüfen Sie das übergeordnete Element von AdControl. Wenn sich adControl in einem übergeordneten Element befindet, muss das übergeordnete Element aktiv und sichtbar sein.
<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>
Stellen Sie sicher, dass AdControl nicht vom Viewport ausgeblendet ist. AdControl muss sichtbar sein, damit Anzeigen ordnungsgemäß angezeigt werden.
Livewerte für ApplicationId und AdUnitId sollten nicht im Emulator getestet werden. Um sicherzustellen, dass AdControl wie erwartet funktioniert, verwenden Sie die Testwerte für ApplicationId und AdUnitId.
Schwarze Box blinkt und verschwindet
Überprüfen Sie alle Schritte im vorherigen AdControl-Abschnitt, der nicht angezeigt wird .
Behandeln Sie das onErrorOccurred-Ereignis , und verwenden Sie die Nachricht, die an den Ereignishandler übergeben wird, um zu ermitteln, ob ein Fehler aufgetreten ist und welche Art von Fehler ausgelöst wurde. Weitere Details finden Sie in der exemplarischen Vorgehensweise zur Fehlerbehandlung in 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>
Der häufigste Fehler, der dazu führt, dass ein schwarzes Feld "Keine Anzeige verfügbar" ist. Dieser Fehler bedeutet, dass keine Anzeige verfügbar ist, die von der Anforderung zurückgegeben werden kann.
AdControl verhält sich normal. Standardmäßig wird adControl reduziert, wenn keine Anzeige angezeigt werden kann. Wenn andere Elemente untergeordnete Elemente desselben übergeordneten Elements sind, werden sie möglicherweise verschoben, um die Lücke des reduzierten AdControl auszufüllen und zu erweitern, wenn die nächste Anforderung erfolgt.
Anzeigen werden nicht aktualisiert
Überprüfen Sie die isAutoRefreshEnabled-Eigenschaft . Diese optionale Eigenschaft ist standardmäßig auf "true" festgelegt. Wenn dieser Wert auf "false" festgelegt ist, muss die Aktualisierungsmethode verwendet werden, um eine andere Anzeige abzurufen.
<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>
Überprüfen Sie Aufrufe der Refresh-Methode . Bei verwendung der automatischen Aktualisierung kann die Aktualisierung nicht zum Abrufen einer anderen Anzeige verwendet werden. Bei Verwendung der manuellen Aktualisierung sollte die Aktualisierung nur nach mindestens 30 bis 60 Sekunden aufgerufen werden, abhängig von der aktuellen Datenverbindung des Geräts.
In diesem Beispiel wird die Verwendung der Refresh-Methode veranschaulicht. Der folgende HTML-Code zeigt ein Beispiel für das Instanziieren von AdControl mit "isAutoRefreshEnabled " auf "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>
Theis-Beispiel veranschaulicht die Verwendung der Aktualisierungsfunktion.
args.setPromise(WinJS.UI.processAll() .then(function (args) { window.setInterval(function() { document.getElementById("myAd").winControl.refresh(); }, 60000) }) );
AdControl verhält sich normal. Manchmal wird dieselbe Anzeige mehrmals in einer Zeile angezeigt, sodass die Anzeige nicht aktualisiert wird.
JavaScript
AdControl wird nicht angezeigt
Stellen Sie sicher, dass die Internetfunktion (Client) in "Package.appxmanifest" ausgewählt ist.
Stellen Sie sicher, dass AdControl instanziiert wird. Wenn AdControl nicht instanziiert wird. sie ist nicht verfügbar.
Die folgenden Codeausschnitte zeigen ein Beispiel zum Instanziieren von AdControl. Dieser HTML-Code zeigt ein Beispiel für das Einrichten der Benutzeroberfläche für 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>
Der folgende JavaScript-Code zeigt ein Beispiel für die Instanziierung von 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 { ... } } }
Überprüfen Sie das übergeordnete Element. Das übergeordnete <div-Element> muss ordnungsgemäß zugewiesen, aktiv und sichtbar sein.
var adDiv = document.getElementById("myAd"); var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}" });
Überprüfen Sie die Anwendungs-ID und die Anzeigeneinheits-ID. Diese IDs müssen mit der Anwendungs-ID und der Anzeigeneinheits-ID übereinstimmen, die Sie im Partner Center erhalten haben. Weitere Informationen finden Sie unter Einrichten von Anzeigeneinheiten in Ihrer App.
var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}" });
Überprüfen Sie das übergeordnete Element von AdControl. Das übergeordnete Element muss aktiv und sichtbar sein.
Livewerte für ApplicationId und AdUnitId sollten nicht im Emulator getestet werden. Um sicherzustellen, dass AdControl wie erwartet funktioniert, verwenden Sie die Testwerte für ApplicationId und AdUnitId.
Schwarze Box blinkt und verschwindet
Überprüfen Sie alle Schritte im AdControl-Abschnitt, der nicht angezeigt wird .
Behandeln Sie das onErrorOccurred-Ereignis , und verwenden Sie die Nachricht, die an den Ereignishandler übergeben wird, um zu ermitteln, ob ein Fehler aufgetreten ist und welche Art von Fehler ausgelöst wurde. Weitere Details finden Sie in der exemplarischen Vorgehensweise zur Fehlerbehandlung in JavaScript.
In diesem Beispiel wird veranschaulicht, wie sie einen Fehlerhandler implementieren, der Fehlermeldungen meldet. Dieser Codeausschnitt von HTML-Code enthält ein Beispiel zum Einrichten der Benutzeroberfläche zum Anzeigen von Fehlermeldungen.
<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 diesem Beispiel wird das Instanziieren von AdControl veranschaulicht. Diese Funktion würde in die Datei "app.onactivated" eingefügt.
var myAdControl = new MicrosoftNSJS.Advertising.AdControl(adDiv, { applicationId: "{ApplicationID}", adUnitId: "{AdUnitID}" }); myAdControl.onErrorOccurred = myAdError;
In diesem Beispiel wird veranschaulicht, wie Fehler gemeldet werden. Diese Funktion würde unterhalb der selbst ausgeführten Funktion in der datei default.js eingefügt.
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; } );
Der häufigste Fehler, der dazu führt, dass ein schwarzes Feld "Keine Anzeige verfügbar" ist. Dieser Fehler bedeutet, dass keine Anzeige verfügbar ist, die von der Anforderung zurückgegeben werden kann.
AdControl verhält sich normal. Manchmal wird dieselbe Anzeige mehrmals in einer Zeile angezeigt, sodass die Anzeige nicht aktualisiert wird.
Anzeigen werden nicht aktualisiert
Überprüfen Sie, ob die IsAutoRefreshEnabled-Eigenschaft Ihres AdControl auf "false" festgelegt ist. Diese optionale Eigenschaft ist standardmäßig auf "true" festgelegt. Wenn dieser Wert auf "false" festgelegt ist, muss die Refresh-Methode verwendet werden, um eine andere Anzeige abzurufen.
Überprüfen Sie Aufrufe der Refresh-Methode . Bei Verwendung der automatischen Aktualisierung (IsAutoRefreshEnabled ist true) kann Refresh nicht zum Abrufen einer anderen Anzeige verwendet werden. Bei Verwendung der manuellen Aktualisierung (IsAutoRefreshEnabled ist false) sollte "Refresh" nur nach mindestens 30 bis 60 Sekunden aufgerufen werden, je nach der aktuellen Datenverbindung des Geräts.
In diesem Beispiel wird veranschaulicht, wie das div-Element für adControl erstellt wird.
<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 diesem Beispiel wird gezeigt, wie die Aktualisierungsfunktion verwendet wird.
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) }) );
AdControl verhält sich normal. Manchmal wird dieselbe Anzeige mehrmals in einer Zeile angezeigt, sodass die Anzeige nicht aktualisiert wird.