XAML- und C#-Handbuch zur Problembehandlung

Warnung

Ab dem 1. Juni 2020 wird die Microsoft Ad Monetization Platform für Windows UWP-Apps heruntergefahren. 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

  1. Stellen Sie sicher, dass die Internet (Client)-Funktion in „Package.appxmanifest“ ausgewählt ist.

  2. Überprüfen Sie die ID der Anwendung und der Anzeigeneinheit. Diese IDs müssen mit der Anwendungs-ID und der Anzeigeneinheits-ID übereinstimmen, die Sie in Partner Center erhalten haben. Weitere Informationen finden Sie unter Einrichten von Anzeigeneinheiten in der App.

    <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  3. Überprüfen Sie die Eigenschaften Höhe und Breite . 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" />
    
  4. Überprüfen Sie die Elementposition. AdControl muss sich im sichtbaren Bereich befinden.

  5. Überprüfen Sie die Visibility-Eigenschaft. Die optionale Visibility-Eigenschaft darf nicht auf „collapsed“ oder „hidden“ festgelegt werden. Diese Eigenschaft kann als Inlineeigenschaft (wie unten dargestellt) oder in einem externen Stylesheet festgelegt werden.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Visibility="Visible"
                  Width="728" Height="90" />
    
  6. Ü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>
    
  7. Stellen Sie sicher, dass AdControl im Viewport nicht ausgeblendet ist. AdControl muss sichtbar sein, damit Anzeigen ordnungsgemäß dargestellt werden.

  8. Echte Werte für ApplicationId und AdUnitId sollten nicht im Emulator getestet werden. Verwenden Sie die Testwerte für ApplicationId und AdUnitId, um sicherzustellen, dass AdControl wie erwartet funktioniert.

  1. Überprüfen Sie noch einmal alle Schritte im vorherigen Abschnitt AdControl wird nicht angezeigt.

  2. Behandeln Sie das ErrorOccurred-Ereignis, und bestimmen Sie anhand der an den Ereignishandler übergebenen Meldung, ob ein Fehler aufgetreten ist und welche Art von Fehler ausgelöst wurde. Weitere Informationen finden Sie unter Fehlerbehandlung in XAML/Exemplarische Vorgehensweise für C#.

    Dieses Beispiel veranschaulicht einen ErrorOccurred-Ereignishandler. Der erste Ausschnitt 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" />
    

    Dieses Beispiel veranschaulicht den entsprechenden C#-Code.

    private void adControl_ErrorOccurred(object sender,               
        Microsoft.Advertising.WinRT.UI.AdErrorEventArgs e)
    {
        TextBlock1.Text = e.ErrorMessage;
    }
    

    Eine Blackbox wird am häufigsten dadurch verursacht, dass keine Anzeige verfügbar ist. Dieser Fehler bedeutet, dass durch die Anforderung keine Anzeige zurückgegeben werden kann.

  3. AdControl verhält sich normal.

    AdControl wird standardmäßig reduziert, wenn keine Anzeige dargestellt werden kann. Wenn andere Elemente demselben übergeordneten Element untergeordnet sind, können sie verschoben werden, um den freien Platz des reduzierten AdControl-Elements zu füllen, und bei der nächsten Anforderung erweitert werden.

Anzeigen werden nicht aktualisiert

  1. Ü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" />
    
  2. Überprüfen Sie Aufrufe der Refresh-Methode . Bei Verwendung der automatischen Aktualisierung kann Refresh nicht verwendet werden, um eine weitere Anzeige abzurufen. Bei Verwendung der manuellen Aktualisierung sollte Refresh abhängig von der aktuellen Datenverbindung des Geräts erst nach mindestens 30 bis 60 Sekunden aufgerufen werden.

    In den folgenden Codeausschnitten wird die Verwendung der Refresh-Methode veranschaulicht. Der erste Ausschnitt 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#-CodeBehind-Code des UI-Markups.

    public RefreshAds()
    {
        var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) };
        timer.Tick += (s, e) => adControl1.Refresh();
        timer.Start();
    }
    
  3. AdControl verhält sich normal. In einigen Fällen wird dieselbe Anzeige mehrmals in Folge angezeigt, wodurch der Eindruck entsteht, dass Anzeigen nicht aktualisiert werden.

C#

AdControl wird nicht angezeigt

  1. Stellen Sie sicher, dass die Internet (Client)-Funktion in „Package.appxmanifest“ ausgewählt ist.

  2. Stellen Sie sicher, dass AdControl instanziiert ist. 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
                };
            }
        }
    }
    
  3. Überprüfen Sie die ID der Anwendung und der Anzeigeneinheit. Diese IDs müssen mit der Anwendungs-ID und der Anzeigeneinheits-ID übereinstimmen, die Sie in Partner Center erhalten haben. Weitere Informationen finden Sie unter Einrichten von Anzeigeneinheiten in der App.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    
  4. Überprüfen Sie den Height-Parameter und Width-Parameter. Diese müssen auf eine der unterstützten Anzeigengrößen für Werbebanner festgelegt werden.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;adControl.Width = 728;
    
  5. Stellen Sie sicher, dass AdControl einem übergeordneten Element hinzugefügt wurde. Damit AdControl angezeigt wird, muss es einem übergeordneten Steuerelement (z. B. StackPanel oder Grid) als untergeordnetes Element hinzugefügt werden.

    ContentPanel.Children.Add(adControl);
    
  6. Überprüfen Sie den Margin-Parameter. AdControl muss sich im sichtbaren Bereich befinden.

  7. Überprüfen Sie die Visibility-Eigenschaft. Die optionale Visibility-Eigenschaft muss auf Visible festgelegt sein.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    adControl.Visibility = System.Windows.Visibility.Visible;
    
  8. Überprüfen Sie das übergeordnete Element von AdControl. Das übergeordnete Element muss aktiv und sichtbar sein.

  9. Echte Werte für ApplicationId und AdUnitId sollten nicht im Emulator getestet werden. Verwenden Sie die Testwerte für ApplicationId und AdUnitId, um sicherzustellen, dass AdControl wie erwartet funktioniert.

  1. Überprüfen Sie noch einmal alle Schritte im Abschnitt oben AdControl wird nicht angezeigt.

  2. Behandeln Sie das ErrorOccurred-Ereignis, und bestimmen Sie anhand der an den Ereignishandler übergebenen Meldung, ob ein Fehler aufgetreten ist und welche Art von Fehler ausgelöst wurde. Weitere Informationen finden Sie unter Fehlerbehandlung in XAML/Exemplarische Vorgehensweise für C#.

    Die folgenden Beispiele veranschaulichen den grundlegenden Code zum Implementieren eines Fehleraufrufs. Durch diesen XAML-Code wird ein TextBlock-Element definiert, mit dem die Fehlermeldung angezeigt wird.

    <TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Width="500" Height="250" />
    

    Durch diesen C#-Code wird die Fehlermeldung abgerufen und in TextBlock angezeigt.

    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;
                };
            }
        }
    }
    

    Eine Blackbox wird am häufigsten dadurch verursacht, dass keine Anzeige verfügbar ist. Dieser Fehler bedeutet, dass durch die Anforderung keine Anzeige zurückgegeben werden kann.

  3. AdControl verhält sich normal. In einigen Fällen wird dieselbe Anzeige mehrmals in Folge angezeigt, wodurch der Eindruck entsteht, dass Anzeigen nicht aktualisiert werden.

Anzeigen werden nicht aktualisiert

  1. Überprüfen Sie, ob in der IsAutoRefreshEnabled-Eigenschaft AdControl auf „false“ festgelegt ist. 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.

  2. Überprüfen Sie Aufrufe der Refresh-Methode . Bei Verwendung der automatischen Aktualisierung ((IsAutoRefreshEnabled ist true)) kann Refresh nicht verwendet werden, um eine weitere Anzeige abzurufen. Bei Verwendung der manuellen Aktualisierung (IsAutoRefreshEnabled ist false) sollte Refresh abhängig von der aktuellen Datenverbindung des Geräts erst nach mindestens 30 bis 60 Sekunden aufgerufen werden.

    Das folgende Beispiel 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();
    }
    
  3. AdControl verhält sich normal. In einigen Fällen wird dieselbe Anzeige mehrmals in Folge angezeigt, wodurch der Eindruck entsteht, dass Anzeigen nicht aktualisiert werden.