Condividi tramite


Guida alla risoluzione dei problemi relativi a XAML e C#

Avviso

A partire dal 1° giugno 2020, la piattaforma Microsoft Ad Monetization per le app Windows UWP verrà arrestata. Ulteriori informazioni

Questo argomento contiene soluzioni ai problemi di sviluppo comuni relativi alle librerie Microsoft Advertising nelle app XAML.

XAML

AdControl non visualizzato

  1. Verificare che la funzionalità Internet (Client) sia selezionata in Package.appxmanifest.

  2. Controllare l'ID applicazione e l'ID unità pubblicitaria. Questi ID devono corrispondere all'ID applicazione e all'ID unità pubblicitaria ottenuti nel Centro per i partner. Per altre informazioni, vedere Configurazione unità pubblicitarie nell'app.

    <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  3. Controllare le proprietà Height e Width. Questi elementi devono essere impostati su una delle dimensioni degli annunci supportati per gli annunci banner.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  4. Controllare la posizione dell'elemento. AdControl deve trovarsi all'interno dell'area visualizzabile.

  5. Controllare la proprietà Visibility. La proprietà facoltativa Visibility non deve essere impostata su compresso o nascosto. Questa proprietà può essere impostata inline (come illustrato di seguito) o in un foglio di stile esterno.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Visibility="Visible"
                  Width="728" Height="90" />
    
  6. Controllare l'elemento padre di AdControl. Se l'elemento AdControl si trova in un elemento padre, l'elemento padre deve essere attivo e visibile.

    <StackPanel>
        <UI:AdControl AdUnitId="{AdUnitID}"
                      ApplicationId="{ApplicationID}"
                      Width="728" Height="90" />
    </StackPanel>
    
  7. Verificare che AdControl non sia nascosto dal riquadro di visualizzazione. AdControl deve essere visibile affinché gli annunci vengano visualizzati correttamente.

  8. I valori live per ApplicationId e AdUnitId non devono essere testati nell'emulatore. Per assicurarsi che AdControl funzioni come previsto, usare i valori di test per ApplicationId e AdUnitId.

  1. Controllare due volte tutti i passaggi nella sezione precedente non visualizzata AdControl.

  2. Gestire l'evento ErrorOccurred e usare il messaggio passato al gestore eventi per determinare se si è verificato un errore e quale tipo di errore è stato generato. Per altre informazioni, vedere Procedura dettagliata sulla gestione degli errori in XAML/C#.

    Questo esempio illustra un gestore eventi ErrorOccurred. Il primo frammento è il markup dell'interfaccia utente XAML.

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

    Questo esempio illustra il codice C# corrispondente.

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

    L'errore più comune che causa una casella nera è "Nessun annuncio disponibile". Questo errore indica che non è disponibile alcun annuncio da restituire dalla richiesta.

  3. AdControl si comporta normalmente.

    Per impostazione predefinita, AdControl si comprimerà quando non può visualizzare un annuncio. Se altri elementi sono elementi figlio dello stesso padre, possono spostarsi per riempire lo spazio del controllo AdControl ed espandersi quando viene effettuata la richiesta successiva.

Annunci non aggiornati

  1. Controllare la proprietà IsAutoRefreshEnabled. Per impostazione predefinita, questa proprietà è impostata su True. Se impostato su False, il metodo Refresh deve essere usato per recuperare un altro annuncio.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  IsAutoRefreshEnabled="True" />
    
  2. Controllare le chiamate al metodo Refresh. Quando si usa l'aggiornamento automatico, Refresh non può essere usato per recuperare un altro annuncio. Quando si usa l'aggiornamento manuale, Refresh deve essere chiamato solo dopo almeno 30-60 secondi a seconda della connessione dati corrente del dispositivo.

    Nei frammenti di codice seguenti viene illustrato un esempio di utilizzo del metodo Refresh. Il primo frammento è il markup dell'interfaccia utente XAML.

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

    Questo frammento di codice mostra un esempio di codice C# dietro il markup dell'interfaccia utente.

    public RefreshAds()
    {
        var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) };
        timer.Tick += (s, e) => adControl1.Refresh();
        timer.Start();
    }
    
  3. AdControl si comporta normalmente. A volte lo stesso annuncio verrà visualizzato più di una volta di seguito dando l'impressione che gli annunci non vengano aggiornati.

C#

AdControl non visualizzato

  1. Verificare che la funzionalità Internet (Client) sia selezionata in Package.appxmanifest.

  2. Verificare che l'istanza di AdControl sia stata creata. Se per AdControl non viene creata un'istanza, non sarà disponibile.

    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. Controllare l'ID applicazione e l'ID unità pubblicitaria. Questi ID devono corrispondere all'ID applicazione e all'ID unità pubblicitaria ottenuti nel Centro per i partner. Per altre informazioni, vedere Configurazione unità pubblicitarie nell'app.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    
  4. Controllare i parametri Height e Width. Questi elementi devono essere impostati su una delle dimensioni degli annunci supportati per gli annunci banner.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;adControl.Width = 728;
    
  5. Verificare che AdControl venga aggiunto a un elemento padre. Per visualizzare, AdControl deve essere aggiunto come elemento figlio a un controllo padre (ad esempio StackPanel o Grid.

    ContentPanel.Children.Add(adControl);
    
  6. Controllare il parametro Margin. AdControl deve trovarsi all'interno dell'area visualizzabile.

  7. Controllare la proprietà Visibility. La proprietà facoltativa Visibility deve essere impostata su Visible.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    adControl.Visibility = System.Windows.Visibility.Visible;
    
  8. Controllare l'elemento padre di AdControl. L'elemento padre deve essere attivo e visibile.

  9. I valori live per ApplicationId e AdUnitId non devono essere testati nell'emulatore. Per assicurarsi che AdControl funzioni come previsto, usare i valori di test per ApplicationId e AdUnitId.

  1. Controllare due volte tutti i passaggi nella sezione precedente non visualizzata AdControl.

  2. Gestire l'evento ErrorOccurred e usare il messaggio passato al gestore eventi per determinare se si è verificato un errore e quale tipo di errore è stato generato. Per altre informazioni, vedere Procedura dettagliata sulla gestione degli errori in XAML/C#.

    Negli esempi seguenti viene illustrato il codice di base necessario per implementare una chiamata di errore. Questo codice XAML definisce un TextBlock usato per visualizzare il messaggio di errore.

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

    Questo codice C# recupera il messaggio di errore e lo visualizza in 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;
                };
            }
        }
    }
    

    L'errore più comune che causa una casella nera è "Nessun annuncio disponibile". Questo errore indica che non è disponibile alcun annuncio da restituire dalla richiesta.

  3. AdControl si comporta normalmente. A volte lo stesso annuncio verrà visualizzato più di una volta di seguito dando l'impressione che gli annunci non vengano aggiornati.

Annunci non aggiornati

  1. Controllare se la proprietà IsAutoRefreshEnabled di AdControl è impostata su false. Per impostazione predefinita, questa proprietà è impostata su true. Se impostato su false, il metodo Refresh deve essere usato per recuperare un altro annuncio.

  2. Controllare le chiamate al metodo Refresh. Quando si usa l'aggiornamento automatico (IsAutoRefreshEnabled è true), l'aggiornamento non può essere usato per recuperare un altro annuncio. Quando si usa l'aggiornamento manuale (IsAutoRefreshEnabled è false), l'aggiornamento deve essere chiamato solo dopo un minimo di 30-60 secondi a seconda della connessione dati corrente del dispositivo.

    Nel seguente esempio viene illustrato come chiamare il metodo Refresh.

    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 si comporta normalmente. A volte lo stesso annuncio verrà visualizzato più di una volta di seguito dando l'impressione che gli annunci non vengano aggiornati.