Dela via


Felsökningsguide för XAML och C#

Varning

Från och med den 1 juni 2020 kommer Microsoft Ad Monetization-plattformen för Windows UWP-appar att stängas av. Läs mer

Det här avsnittet innehåller lösningar på vanliga utvecklingsproblem med Microsofts annonsbibliotek i XAML-appar.

XAML

AdControl visas inte

  1. Kontrollera att funktionen Internet (klient) har valts i Package.appxmanifest.

  2. Kontrollera program-ID:t och annonsenhets-ID:t. Dessa ID:n måste matcha program-ID:t och annonsenhets-ID:t som du fick i Partnercenter. Mer information finns i Konfigurera annonsenheter i din app.

    <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  3. Kontrollera egenskaperna höjd och bredd. Dessa måste vara inställda på någon av de annonsstorlekar som stöds för bannerannonser.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  4. Kontrollera elementpositionen. AdControl- måste finnas i det visningsbara området.

  5. Kontrollera egenskapen Synlighet. Den valfria egenskapen Synlighet får inte vara inställd på sammanfälld eller dold. Den här egenskapen kan anges direkt (som visas nedan) eller i en extern formatmall.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Visibility="Visible"
                  Width="728" Height="90" />
    
  6. Kontrollera den överordnade komponenten för AdControl. Om elementet AdControl finns i ett överordnat element måste det överordnade elementet vara aktivt och synligt.

    <StackPanel>
        <UI:AdControl AdUnitId="{AdUnitID}"
                      ApplicationId="{ApplicationID}"
                      Width="728" Height="90" />
    </StackPanel>
    
  7. Kontrollera att AdControl- inte är dold från visningsporten. AdControl- måste vara synlig för att annonser ska visas korrekt.

  8. Livevärden för ApplicationId och AdUnitId ska inte testas i emulatorn. För att säkerställa att AdControl- fungerar som förväntat använder du -testvärdena för både ApplicationId och AdUnitId.

  1. Dubbelkolla alla steg i föregående avsnitt där AdControl inte visas.

  2. Hantera ErrorOccurred händelse och använd meddelandet som skickas till händelsehanteraren för att avgöra om ett fel har inträffat och vilken typ av fel som utlöstes. Mer information finns i genomgången av felhantering i XAML/C# .

    Det här exemplet visar en ErrorOccurred händelsehanterare. Det första kodfragmentet är XAML UI-markering.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  ErrorOccurred="adControl_ErrorOccurred" />
    <TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Width="500" Height="250" />
    

    Det här exemplet visar motsvarande C#-kod.

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

    Det vanligaste felet som orsakar en svart ruta är "Ingen annons är tillgänglig". Det här felet innebär att det inte finns någon tillgänglig annons som kan skickas tillbaka som svar på begäran.

  3. AdControl fungerar normalt.

    Som standardinställning kollapsar AdControl när det inte går att visa en annons. Om andra element är barn till samma förälder kan de flytta för att fylla luckan efter den komprimerade AdControl- och expandera när nästa förfrågan görs.

Annonser uppdateras inte

  1. Kontrollera egenskapen IsAutoRefreshEnabled. Som standard är den här valfria egenskapen inställd på True. När värdet är Falsemåste metoden Uppdatera användas för att hämta en annan annons.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  IsAutoRefreshEnabled="True" />
    
  2. Kontrollera anrop till metoden Uppdatera. När du använder automatisk uppdatering kan Uppdatera inte användas för att hämta en annan annons. När du använder manuell uppdatering ska Uppdatera anropas endast efter minst 30 till 60 sekunder beroende på enhetens aktuella dataanslutning.

    Följande kodfragment visar ett exempel på hur du använder metoden Uppdatera. Det första kodfragmentet är XAML UI-markering.

    <UI:AdControl x:Name="adControl1"
                  AdUnitId="{AdUnit_ID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  IsAutoRefreshEnabled="False" />
    

    Det här kodfragmentet visar ett exempel på C#-koden bakom UI-markering.

    public RefreshAds()
    {
        var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) };
        timer.Tick += (s, e) => adControl1.Refresh();
        timer.Start();
    }
    
  3. AdControl fungerar normalt. Ibland visas samma annons mer än en gång i rad som visar att annonser inte uppdateras.

C#

AdControl visas inte

  1. Kontrollera att funktionen Internet (klient) har valts i Package.appxmanifest.

  2. Säkerställ att AdControl instansieras. Om AdControl- inte instansieras blir den inte tillgänglig.

    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. Kontrollera program-ID:t och annonsenhets-ID:t. Dessa ID:n måste matcha program-ID:t och annonsenhets-ID:t som du fick i Partnercenter. Mer information finns i Konfigurera annonsenheter i din app.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    
  4. Kontrollera parametrarna Height och Width. Dessa måste vara inställda på någon av de annonsstorlekar som stöds för bannerannonser.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;adControl.Width = 728;
    
  5. Kontrollera att AdControl läggs till i ett föräldraelement. Om du vill visa AdControl måste läggas till som ett underordnat objekt i en överordnad kontroll (till exempel en StackPanel- eller Grid).

    ContentPanel.Children.Add(adControl);
    
  6. Kontrollera parametern Margin. AdControl- måste finnas i det visningsbara området.

  7. Kontrollera egenskapen Synlighet. Den valfria egenskapen Synlighet måste vara inställd på Visible.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    adControl.Visibility = System.Windows.Visibility.Visible;
    
  8. Kontrollera den överordnade komponenten för AdControl. Föräldern måste vara aktiv och synlig.

  9. Livevärden för ApplicationId och AdUnitId ska inte testas i emulatorn. För att säkerställa att AdControl- fungerar som förväntat använder du -testvärdena för både ApplicationId och AdUnitId.

  1. Kontrollera alla steg i AdControl som inte visas avsnittet ovan.

  2. Hantera ErrorOccurred händelse och använd meddelandet som skickas till händelsehanteraren för att avgöra om ett fel har inträffat och vilken typ av fel som utlöstes. Mer information finns i genomgången av felhantering i XAML/C# .

    I följande exempel visas den grundläggande kod som behövs för att implementera ett felanrop. Den här XAML-koden definierar en TextBlock- som används för att visa felmeddelandet.

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

    Den här C#-koden hämtar felmeddelandet och visar det i TextBlock-.

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

    Det vanligaste felet som orsakar en svart ruta är "Ingen annons är tillgänglig". Det här felet innebär att det inte finns någon tillgänglig annons som kan skickas tillbaka som svar på begäran.

  3. AdControl beter sig normalt. Ibland visas samma annons mer än en gång i rad som visar att annonser inte uppdateras.

Annonser uppdateras inte

  1. Kontrollera om egenskapen IsAutoRefreshEnabled för din AdControl- är inställd på false. Som standard är den här valfria egenskapen inställd på sant. När värdet är falsemåste metoden Uppdatera användas för att hämta en annan annons.

  2. Kontrollera anrop till metoden Uppdatera. När du använder automatisk uppdatering (IsAutoRefreshEnabled är sant) kan Uppdatera inte användas för att hämta en annan annons. När du använder manuell uppdatering (IsAutoRefreshEnabled är falskt), bör Uppdatera anropas endast efter minst 30 till 60 sekunder beroende på enhetens aktuella dataanslutning.

    I följande exempel visas hur du anropar metoden Uppdatera.

    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 fungerar normalt. Ibland visas samma annons mer än en gång i rad som visar att annonser inte uppdateras.