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

Avertissement

Depuis le 1er juin 2020, la plateforme de monétisation Microsoft AD pour les applications Windows UWP sera arrêtée.As of June 1, 2020, the Microsoft Ad Monetization platform for Windows UWP apps will be shut down. En savoir plusLearn more

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.This topic contains solutions to common development issues with the Microsoft advertising libraries in XAML apps.

XAMLXAML

AdControl invisibleAdControl not appearing

  1. Assurez-vous que la fonctionnalité Internet (client) est sélectionnée dans le fichier Package.appxmanifest.Ensure that the Internet (Client) capability is selected in Package.appxmanifest.

  2. Vérifiez l’ID de l’application et l’ID d’unité publicitaire.Check the application ID and ad unit ID. Ces ID doivent correspondre à l’ID d’application et à l’ID d’unité Active Directory que vous avez obtenus dans l’espace partenaires.These IDs must match the application ID and ad unit ID that you obtained in Partner Center. Pour plus d’informations, voir Configurer des unités publicitaires dans votre application.For more information, see Set up ad units in your app.

    <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  3. Vérifiez les propriétés de hauteur et de largeur .Check the Height and Width properties. Elles doivent être définies sur l’une des tailles de bannières publicitaires prises en charge.These must be set to one of the Supported ad sizes for banner ads.

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

  5. Vérifiez la propriété Visibility.Check the Visibility property. La propriété facultative Visibility ne doit pas être définie sur collapsed ou hidden.The optional Visibility property must not be set to collapsed or hidden. Cette propriété peut être incluse (comme illustré ci-dessous) ou définie dans une feuille de style externe.This property can be set inline (as shown below) or in an external style sheet.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Visibility="Visible"
                  Width="728" Height="90" />
    
  6. Vérifiez le parent du AdControl.Check the parent of the AdControl. Si l’élément AdControl réside dans un élément parent, ce dernier doit être actif et visible.If the AdControl element resides in a parent element, the parent must be active and 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.Ensure the AdControl is not hidden from the viewport. Le AdControl doit être visible afin que les publicités s’affichent correctement.The AdControl must be visible for ads to display properly.

  8. Les valeurs dynamiques des paramètres ApplicationId et AdUnitId ne doivent pas être testées dans l’émulateur.Live values for ApplicationId and AdUnitId should not be tested in the emulator. Pour vous assurer que le classe AdControl fonctionne comme prévu, utilisez les valeurs de test pour ApplicationID et AdUnitId.To ensure the AdControl is functioning as expected, use the test values for both ApplicationId and AdUnitId.

  1. Vérifiez toutes les étapes indiquées dans la section précédente AdControl invisible.Double-check all steps in the previous AdControl not appearing section.

  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.Handle the ErrorOccurred event, and use the message that is passed to the event handler to determine whether an error occurred and what type of error was thrown. Voir Gestion des erreurs dans la procédure pas à pas pour XAML/C# pour plus d’informations.See Error handling in XAML/C# walkthrough for more information.

    Cet exemple illustre un gestionnaire d’événements ErrorOccurred.This example demonstrates an ErrorOccurred event handler. Le premier extrait est le balisage d’interface utilisateur XAML.The first snippet is the 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" />
    

    Cet exemple présente le code C# correspondant.This example demonstrates the corresponding C# code.

    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 ».The most common error that causes a black box is “No ad available.” Cette erreur signifie qu’aucune publicité n’est disponible pour être retourné à partir de la demande.This error means there is no ad available to return from the request.

  3. Le contrôle AdControl se comporte normalement.The AdControl is behaving normally.

    Par défaut, le AdControl est réduit s’il ne peut pas afficher de publicité.By default, the AdControl will collapse when it cannot display an ad. 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.If other elements are children of the same parent they may move to fill the gap of the collapsed AdControl and expand when the next request is made.

Non-actualisation des publicitésAds not refreshing

  1. Vérifiez la propriété IsAutoRefreshEnabled .Check the IsAutoRefreshEnabled property. Par défaut, cette propriété facultative est définie sur True.By default, this optional property is set to True. Si elle est définie sur False, la méthode Refresh doit être utilisée pour récupérer une autre publicité.When set to False, the Refresh method must be used to retrieve another ad.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  IsAutoRefreshEnabled="True" />
    
  2. Vérifiez les appels à la méthode Refresh .Check calls to the Refresh method. Si vous utilisez l’actualisation automatique, la méthode Refresh ne permet pas de récupérer une autre publicité.When using automatic refresh, Refresh cannot be used to retrieve another ad. 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.When using manual refresh, Refresh should be called only after a minimum of 30 to 60 seconds depending on the device’s current data connection.

    Les extraits de code suivants illustrent comment utiliser la méthode Refresh.The following code snippets show an example of how to use the Refresh method. Le premier extrait est le balisage d’interface utilisateur XAML.The first snippet is the XAML UI markup.

    <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.This code snippet shows an example of the C# code behind the UI markup.

    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.The AdControl is behaving normally. 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.Sometimes the same ad will appear more than once in a row giving the appearance that ads are not refreshing.

C#C#

AdControl invisibleAdControl not appearing

  1. Assurez-vous que la fonctionnalité Internet (client) est sélectionnée dans le fichier Package.appxmanifest.Ensure that the Internet (Client) capability is selected in Package.appxmanifest.

  2. Vérifiez que le contrôle AdControl est instancié.Ensure the AdControl is instantiated. Si le contrôle AdControl n’est pas instancié, il ne sera pas disponible.If the AdControl is not instantiated it will not be available.

    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.Check the application ID and ad unit ID. Ces ID doivent correspondre à l’ID d’application et à l’ID d’unité Active Directory que vous avez obtenus dans l’espace partenaires.These IDs must match the application ID and ad unit ID that you obtained in Partner Center. Pour plus d’informations, voir Configurer des unités publicitaires dans votre application.For more information, see Set up ad units in your app.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    
  4. Vérifiez les paramètres Height et Width.Check the Height and Width parameters. Celles-ci doivent être définies sur l’une des tailles de publicités prises en charge pour les bannières publicitaires.These must be set to one of the supported ad sizes for banner ads.

    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.Ensure the AdControl is added to a parent element. 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).To display, the AdControl must be added as a child to a parent control (for example, a StackPanel or Grid).

    ContentPanel.Children.Add(adControl);
    
  6. Vérifiez le paramètre Margin.Check the Margin parameter. Le contrôle AdControl doit se situer à l’intérieur de la zone d’affichage.The AdControl must be inside the viewable area.

  7. Vérifiez la propriété Visibility.Check the Visibility property. La propriété facultative Visibility doit être définie sur Visible.The optional Visibility property must be set to 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.Check the parent of the AdControl. Le parent doit être actif et visible.The parent must be active and visible.

  9. Les valeurs dynamiques des paramètres ApplicationId et AdUnitId ne doivent pas être testées dans l’émulateur.Live values for ApplicationId and AdUnitId should not be tested in the emulator. Pour vous assurer que le classe AdControl fonctionne comme prévu, utilisez les valeurs de test pour ApplicationID et AdUnitId.To ensure the AdControl is functioning as expected, use the test values for both ApplicationId and AdUnitId.

  1. Vérifiez toutes les étapes indiquées dans la section AdControl invisible ci-dessus.Double-check all steps in the AdControl not appearing section above.

  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.Handle the ErrorOccurred event, and use the message that is passed to the event handler to determine whether an error occurred and what type of error was thrown. Voir Gestion des erreurs dans la procédure pas à pas pour XAML/C# pour plus d’informations.See Error handling in XAML/C# walkthrough for more information.

    Les exemples suivants présentent le code de base requis pour implémenter un appel d’erreur.The following examples show the basic code needed to implement an error call. Ce code XAML définit un TextBlock utilisé pour afficher le message d’erreur.This XAML code defines a TextBlock that is used to display the error message.

    <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.This C# code retrieves the error message and displays it in the 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 ».The most common error that causes a black box is “No ad available.” Cette erreur signifie qu’aucune publicité n’est disponible pour être retourné à partir de la demande.This error means there is no ad available to return from the request.

  3. Le contrôle AdControl se comporte normalement.AdControl is behaving normally. 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.Sometimes the same ad will appear more than once in a row giving the appearance that ads are not refreshing.

Non-actualisation des publicitésAds not refreshing

  1. Vérifiez si la propriété IsAutoRefreshEnabled de votre AdControl est définie sur false.Check whether the IsAutoRefreshEnabled property of your AdControl is set to false. Par défaut, cette propriété facultative a la valeur true.By default, this optional property is set to true. Lorsque la valeur est false, la méthode Refresh doit être utilisée pour récupérer une autre publicité.When set to false, the Refresh method must be used to retrieve another ad.

  2. Vérifiez les appels à la méthode Refresh .Check calls to the Refresh method. 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é.When using automatic refresh (IsAutoRefreshEnabled is true), Refresh cannot be used to retrieve another ad. 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.When using manual refresh (IsAutoRefreshEnabled is false), Refresh should be called only after a minimum of 30 to 60 seconds depending on the device’s current data connection.

    L’exemple suivant montre comment appeler la méthode Refresh.The following example demonstrates how to call the Refresh method.

    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.The AdControl is behaving normally. 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.Sometimes the same ad will appear more than once in a row giving the appearance that ads are not refreshing.