Partager via


Guide de résolution des problèmes pour XAML et C#

Avertissement

Depuis le 1er juin 2020, la plateforme Microsoft Ad Monetization pour les applications Windows UWP sera arrêtée. En savoir plus

Cette rubrique contient des solutions aux problèmes de développement courants liés aux bibliothèques de publicités Microsoft dans les applications XAML.

XAML

AdControl n’apparaît pas

  1. Vérifiez que la fonctionnalité Internet (client) est sélectionnée dans Package.appxmanifest.

  2. Vérifiez l’ID d’application et l’ID d’unité publicitaire. Ces ID doivent correspondre à l’ID d’application et à l’ID d’unité publicitaire que vous avez obtenus dans l’Espace partenaires. Pour plus d’informations, consultez Configurer des unités publicitaires dans votre application.

    <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  3. Vérifiez les propriétés Height et Width . Celles-ci doivent être définies sur l’une des tailles de publicité prises en charge pour les bannières publicitaires.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  4. Vérifiez la position de l’élément. AdControl doit se trouver à l’intérieur de la zone visible.

  5. Vérifiez la propriété Visibility . La propriété Visibility facultative ne doit pas être définie sur réduite ou masquée. Cette propriété peut être définie inline (comme indiqué ci-dessous) ou dans une feuille de style externe.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Visibility="Visible"
                  Width="728" Height="90" />
    
  6. Vérifiez le parent d’AdControl. Si l’élément AdControl réside dans un élément parent, le parent doit être actif et visible.

    <StackPanel>
        <UI:AdControl AdUnitId="{AdUnitID}"
                      ApplicationId="{ApplicationID}"
                      Width="728" Height="90" />
    </StackPanel>
    
  7. Vérifiez que AdControl n’est pas masqué dans la fenêtre d’affichage. AdControl doit être visible pour que les publicités s’affichent correctement.

  8. Les valeurs actives pour ApplicationId et AdUnitId ne doivent pas être testées dans l’émulateur. Pour vous assurer que AdControl fonctionne comme prévu, utilisez les valeurs de test pour ApplicationId et AdUnitId.

  1. Vérifiez toutes les étapes de la section AdControl précédente.

  2. Gérez l’événement ErrorOccurred et utilisez le message transmis au gestionnaire d’événements pour déterminer si une erreur s’est produite et quel type d’erreur a été levée. Pour plus d’informations, consultez la procédure pas à pas de gestion des erreurs en XAML/C#.

    Cet exemple illustre un gestionnaire d’événements ErrorOccurred . Le premier extrait de code est le balisage de l’interface utilisateur XAML.

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

    Cet exemple illustre le code C# correspondant.

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

    L’erreur la plus courante qui provoque une boîte noire est « Aucune publicité disponible ». Cette erreur signifie qu’aucune publicité n’est disponible pour retourner à partir de la demande.

  3. AdControl se comporte normalement.

    Par défaut, AdControl s’effondre lorsqu’il ne peut pas afficher une publicité. Si d’autres éléments sont des enfants du même parent, ils peuvent se déplacer pour combler l’écart de l’AdControl réduit et développer lorsque la requête suivante est effectuée.

Publicités non actualisées

  1. Vérifiez la propriété IsAutoRefreshEnabled . Par défaut, cette propriété facultative a la valeur True. Lorsque la valeur est False, la méthode Refresh doit être utilisée pour récupérer une autre publicité.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  IsAutoRefreshEnabled="True" />
    
  2. Vérifiez les appels à la méthode Refresh . Lors de l’utilisation de l’actualisation automatique, l’actualisation ne peut pas être utilisée pour récupérer une autre publicité. Lors de l’utilisation de l’actualisation manuelle, l’actualisation doit être appelée uniquement après un minimum de 30 à 60 secondes en fonction de la connexion de données actuelle de l’appareil.

    Les extraits de code suivants montrent un exemple d’utilisation de la méthode Refresh . Le premier extrait de code est le balisage de l’interface utilisateur XAML.

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

    Cet extrait de code montre un exemple de code C# derrière le balisage de l’interface utilisateur.

    public RefreshAds()
    {
        var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) };
        timer.Tick += (s, e) => adControl1.Refresh();
        timer.Start();
    }
    
  3. AdControl se comporte normalement. Parfois, la même publicité apparaît plusieurs fois dans une ligne donnant l’apparence que les publicités ne sont pas actualisées.

C#

AdControl n’apparaît pas

  1. Vérifiez que la fonctionnalité Internet (client) est sélectionnée dans Package.appxmanifest.

  2. Vérifiez que AdControl est instancié. Si AdControl n’est pas instancié, il n’est pas disponible.

    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. Vérifiez l’ID d’application et l’ID d’unité publicitaire. Ces ID doivent correspondre à l’ID d’application et à l’ID d’unité publicitaire que vous avez obtenus dans l’Espace partenaires. Pour plus d’informations, consultez Configurer des unités publicitaires dans votre application.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    
  4. Vérifiez les paramètres Hauteur et Largeur . Celles-ci doivent être définies sur l’une des tailles de publicité prises en charge pour les bannières publicitaires.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;adControl.Width = 728;
    
  5. Vérifiez que AdControl est ajouté à un élément parent. Pour afficher, AdControl doit être ajouté en tant qu’enfant à un contrôle parent (par exemple, un StackPanel ou Grid).

    ContentPanel.Children.Add(adControl);
    
  6. Vérifiez le paramètre Margin . AdControl doit se trouver à l’intérieur de la zone visible.

  7. Vérifiez la propriété Visibility . La propriété Visibility facultative doit être définie sur Visible.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    adControl.Visibility = System.Windows.Visibility.Visible;
    
  8. Vérifiez le parent d’AdControl. Le parent doit être actif et visible.

  9. Les valeurs actives pour ApplicationId et AdUnitId ne doivent pas être testées dans l’émulateur. Pour vous assurer que AdControl fonctionne comme prévu, utilisez les valeurs de test pour ApplicationId et AdUnitId.

  1. Vérifiez toutes les étapes dans AdControl qui n’apparaissent pas dans la section ci-dessus.

  2. Gérez l’événement ErrorOccurred et utilisez le message transmis au gestionnaire d’événements pour déterminer si une erreur s’est produite et quel type d’erreur a été levée. Pour plus d’informations, consultez la procédure pas à pas de gestion des erreurs en XAML/C#.

    Les exemples suivants montrent le code de base nécessaire pour implémenter un appel d’erreur. Ce code XAML définit un TextBlock utilisé pour afficher le message d’erreur.

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

    Ce code C# récupère le message d’erreur et l’affiche dans 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’erreur la plus courante qui provoque une boîte noire est « Aucune publicité disponible ». Cette erreur signifie qu’aucune publicité n’est disponible pour retourner à partir de la demande.

  3. AdControl se comporte normalement. Parfois, la même publicité apparaît plusieurs fois dans une ligne donnant l’apparence que les publicités ne sont pas actualisées.

Publicités non actualisées

  1. Vérifiez si la propriété IsAutoRefreshEnabled de votre AdControl a la valeur false. Par défaut, cette propriété facultative est définie sur true. Lorsque la valeur est false, la méthode Refresh doit être utilisée pour récupérer une autre publicité.

  2. Vérifiez les appels à la méthode Refresh . Lorsque vous utilisez l’actualisation automatique (IsAutoRefreshEnabled a la valeur true), l’actualisation ne peut pas être utilisée pour récupérer une autre publicité. Lorsque vous utilisez l’actualisation manuelle (IsAutoRefreshEnabled est false), l’actualisation doit être appelée uniquement après un minimum de 30 à 60 secondes en fonction de la connexion de données actuelle de l’appareil.

    L’exemple suivant montre comment appeler la méthode 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 se comporte normalement. Parfois, la même publicité apparaît plusieurs fois dans une ligne donnant l’apparence que les publicités ne sont pas actualisées.