Share via


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

Avertissement

À compter du 1er juin 2020, la plateforme de monétisation Microsoft Ad pour les applications Windows UWP sera arrêtée. En savoir plus

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

XAML

AdControl invisible

  1. Assurez-vous que la fonctionnalité Internet (client) est sélectionnée dans le fichier Package.appxmanifest.

  2. Vérifiez l’ID de l’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, voir 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 . Elles doivent être définies sur l’une des tailles de bannières publicitaires prises en charge.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  4. Vérifiez la position des éléments. Le contrôle AdControl doit se situer à l’intérieur de la zone d’affichage.

  5. Vérifiez la propriété Visibility. La propriété facultative Visibility ne doit pas être définie sur collapsed ou hidden. Cette propriété peut être incluse (comme illustré ci-dessous) ou définie dans une feuille de style externe.

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

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

  8. Les valeurs dynamiques des paramètres 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 indiquées dans la section précédente AdControl invisible.

  2. Gérez l’événement ErrorOccurred, puis utilisez le message transmis au gestionnaire d’événements pour déterminer si une erreur s’est produite et identifier le type d’erreur levée. Voir Gestion des erreurs dans la procédure pas à pas pour XAML/C# pour plus d’informations.

    Cet exemple illustre un gestionnaire d’événements ErrorOccurred. Le premier extrait est le balisage d’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 présente 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 provoquant une boîte noire est la suivante : « Aucune publicité disponible ». Cette erreur signifie qu’aucune publicité n’est disponible pour être retourné à partir de la demande.

  3. Le contrôle AdControl se comporte normalement.

    Par défaut, le AdControl est réduit s’il ne peut pas afficher de publicité. Si d’autres éléments sont des enfants du même parent, ils peuvent être déplacés pour combler le vide du contrôle AdControl réduit, et développés à la prochaine demande.

Non-actualisation des publicités

  1. Vérifiez la propriété IsAutoRefreshEnabled . Par défaut, cette propriété facultative est définie sur True. Si elle est définie sur 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 . Si vous utilisez l’actualisation automatique, la méthode Refresh ne permet pas de récupérer une autre publicité. Si vous utilisez l’actualisation manuelle, la méthode Refresh 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 illustrent comment utiliser la méthode Refresh. Le premier extrait est le balisage d’interface utilisateur XAML.

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

    Cet extrait de code présente un exemple de code C# derrière le balisage d’interface utilisateur.

    public RefreshAds()
    {
        var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) };
        timer.Tick += (s, e) => adControl1.Refresh();
        timer.Start();
    }
    
  3. Le contrôle AdControl se comporte normalement. Parfois, une même publicité s’affiche plusieurs fois dans une ligne, ce qui donne l’impression que les publicités ne sont pas actualisées.

C#

AdControl invisible

  1. Assurez-vous que la fonctionnalité Internet (client) est sélectionnée dans le fichier Package.appxmanifest.

  2. Vérifiez que le contrôle AdControl est instancié. Si le contrôle AdControl n’est pas instancié, il ne sera 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 de l’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, voir 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 Height et Width. Celles-ci doivent être définies sur l’une des tailles d’annonces prises en charge pour les bannières publicitaires.

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

    ContentPanel.Children.Add(adControl);
    
  6. Vérifiez le paramètre Margin. Le contrôle AdControl doit se situer à l’intérieur de la zone d’affichage.

  7. Vérifiez la propriété Visibility. La propriété facultative Visibility 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 du AdControl. Le parent doit être actif et visible.

  9. Les valeurs dynamiques des paramètres 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 indiquées dans la section AdControl invisible ci-dessus.

  2. Gérez l’événement ErrorOccurred, puis utilisez le message transmis au gestionnaire d’événements pour déterminer si une erreur s’est produite et identifier le type d’erreur levée. Voir Gestion des erreurs dans la procédure pas à pas pour XAML/C# pour plus d’informations.

    Les exemples suivants présentent le code de base requis 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 le 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 provoquant une boîte noire est la suivante : « Aucune publicité disponible ». Cette erreur signifie qu’aucune publicité n’est disponible pour être retourné à partir de la demande.

  3. Le contrôle AdControl se comporte normalement. Parfois, une même publicité s’affiche plusieurs fois dans une ligne, ce qui donne l’impression que les publicités ne sont pas actualisées.

Non-actualisation des publicités

  1. Vérifiez si la propriété IsAutoRefreshEnabled de votre AdControl est définie sur false. 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é.

  2. Vérifiez les appels à la méthode Refresh . Si vous utilisez l’actualisation automatique (IsAutoRefreshEnabled est définie sur true), la méthode Refresh ne permet pas de récupérer une autre publicité. Si vous utilisez l’actualisation manuelle (IsAutoRefreshEnabled est définie sur false), la méthode Refresh 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. Le contrôle AdControl se comporte normalement. Parfois, une même publicité s’affiche plusieurs fois dans une ligne, ce qui donne l’impression que les publicités ne sont pas actualisées.