XAML- und C#-Handbuch zur Problembehandlung
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 XAML-Apps.
XAML
AdControl wird nicht angezeigt
Stellen Sie sicher, dass die Internetfunktion (Client) in "Package.appxmanifest" ausgewählt ist.
Ü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.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" />
Überprüfen Sie die Eigenschaften "Height " und "Width ". Diese müssen auf eine der unterstützten Anzeigengrößen für Banneranzeigen festgelegt werden.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" />
Überprüfen Sie die Elementposition. Das AdControl muss sich innerhalb des sichtbaren Bereichs befinden.
Überprüfen Sie die Visibility-Eigenschaft . Die optionale Visibility-Eigenschaft darf nicht auf reduziert oder ausgeblendet festgelegt werden. Diese Eigenschaft kann inline (wie unten dargestellt) oder in einem externen Stylesheet festgelegt werden.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Visibility="Visible" Width="728" Height="90" />
Überprüfen Sie das übergeordnete Element von AdControl. Wenn sich das AdControl-Element in einem übergeordneten Element befindet, muss das übergeordnete Element aktiv und sichtbar sein.
<StackPanel> <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" /> </StackPanel>
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 ErrorOccurred-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 Informationen finden Sie in der exemplarischen Vorgehensweise zur Fehlerbehandlung in XAML/C#.
In diesem Beispiel wird ein ErrorOccurred-Ereignishandler veranschaulicht. Der erste Codeausschnitt ist das XAML-UI-Markup.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" ErrorOccurred="adControl_ErrorOccurred" /> <TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Width="500" Height="250" />
In diesem Beispiel wird der entsprechende C#-Code veranschaulicht.
private void adControl_ErrorOccurred(object sender, Microsoft.Advertising.WinRT.UI.AdErrorEventArgs e) { TextBlock1.Text = e.ErrorMessage; }
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 . Standardmäßig ist diese optionale Eigenschaft auf True festgelegt. Wenn dieser Wert auf "False" festgelegt ist, muss die Refresh-Methode verwendet werden, um eine andere Anzeige abzurufen.
<UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}" Width="728" Height="90" IsAutoRefreshEnabled="True" />
Überprüfen Sie Aufrufe der Refresh-Methode . Bei Verwendung der automatischen Aktualisierung kann "Refresh" nicht zum Abrufen einer anderen Anzeige verwendet werden. Bei verwendung der manuellen Aktualisierung sollte "Refresh" nur nach mindestens 30 bis 60 Sekunden aufgerufen werden, abhängig von der aktuellen Datenverbindung des Geräts.
Die folgenden Codeausschnitte zeigen ein Beispiel für die Verwendung der Refresh-Methode . Der erste Codeausschnitt ist das XAML-UI-Markup.
<UI:AdControl x:Name="adControl1" AdUnitId="{AdUnit_ID}" ApplicationId="{ApplicationID}" Width="728" Height="90" IsAutoRefreshEnabled="False" />
Dieser Codeausschnitt zeigt ein Beispiel für den C#-Code hinter dem UI-Markup.
public RefreshAds() { var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) }; timer.Tick += (s, e) => adControl1.Refresh(); timer.Start(); }
AdControl verhält sich normal. Manchmal wird dieselbe Anzeige mehrmals in einer Zeile angezeigt, sodass die Anzeige nicht aktualisiert wird.
C#
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, ist es nicht verfügbar.
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 }; } } }
Ü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.
adControl = new AdControl(); adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}"; adControl.Height = 90; adControl.Width = 728;
Überprüfen Sie die Parameter "Height" und "Width ". Diese müssen auf eine der unterstützten Anzeigengrößen für Banneranzeigen festgelegt werden.
adControl = new AdControl(); adControl.ApplicationId = "{ApplicationID}"; adControl.AdUnitId = "{AdUnitID}"; adControl.Height = 90;adControl.Width = 728;
Stellen Sie sicher, dass adControl einem übergeordneten Element hinzugefügt wird. Zum Anzeigen muss adControl einem übergeordneten Steuerelement (z. B. einem StackPanel- oder Grid-Steuerelement) als untergeordnetes Element hinzugefügt werden.
ContentPanel.Children.Add(adControl);
Überprüfen Sie den Margin-Parameter . Das AdControl muss sich innerhalb des sichtbaren Bereichs befinden.
Überprüfen Sie die Visibility-Eigenschaft . Die optionale Visibility-Eigenschaft muss auf "Visible" festgelegt werden.
adControl = new AdControl(); adControl.ApplicationId = "{ApplicationID}"; adControl.AdUnitId = "{AdUnitID}"; adControl.Height = 90; adControl.Width = 728; adControl.Visibility = System.Windows.Visibility.Visible;
Ü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 oben angezeigten Abschnitt "AdControl" nicht.
Behandeln Sie das ErrorOccurred-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 Informationen finden Sie in der exemplarischen Vorgehensweise zur Fehlerbehandlung in XAML/C#.
Die folgenden Beispiele zeigen den grundlegenden Code, der zum Implementieren eines Fehleraufrufs erforderlich ist. Dieser XAML-Code definiert einen TextBlock , der zum Anzeigen der Fehlermeldung verwendet wird.
<TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Width="500" Height="250" />
Dieser C#-Code ruft die Fehlermeldung ab und zeigt sie im TextBlock an.
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; }; } } }
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.
Im folgenden Beispiel wird veranschaulicht, wie die Refresh-Methode aufgerufen wird.
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(); }
AdControl verhält sich normal. Manchmal wird dieselbe Anzeige mehrmals in einer Zeile angezeigt, sodass die Anzeige nicht aktualisiert wird.