XAML と C# のトラブルシューティング ガイドXAML and C# troubleshooting guide

このトピックでは、XAML アプリの Microsoft Advertising ライブラリに関する、開発上の一般的な問題に対する解決策について説明します。This topic contains solutions to common development issues with the Microsoft advertising libraries in XAML apps.

XAMLXAML

AdControl が表示されないAdControl not appearing

  1. Package.appxmanifest で [インターネット (クライアント)] 機能が選択されていることを確認します。Ensure that the Internet (Client) capability is selected in Package.appxmanifest.

  2. アプリケーション ID と広告ユニット ID を確認します。Check the application ID and ad unit ID. これらの Id は、アプリケーション ID とパートナー センターで取得した広告ユニット ID に一致する必要があります。These IDs must match the application ID and ad unit ID that you obtained in Partner Center. 詳しくは、「アプリの広告ユニットをセットアップする」をご覧ください。For more information, see Set up ad units in your app.

    <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  3. Height プロパティと Width プロパティを確認します。Check the Height and Width properties. これらのプロパティは、バナー広告でサポートされている広告サイズのいずれかに設定する必要があります。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. 要素の配置を確認します。Check the element position. AdControl は表示可能領域の内部にある必要があります。The AdControl must be inside the viewable area.

  5. Visibility プロパティを確認します。Check the Visibility property. 省略可能な Visibility プロパティは collapsed または hidden に設定しないでください。The optional Visibility property must not be set to collapsed or hidden. (次のように) インラインで設定できるほか、外部スタイル シートで設定できます。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. AdControl の親を確認します。Check the parent of the AdControl. AdControl 要素がある親要素の中にある場合、この親はアクティブで表示されている必要があります。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. AdControl がビューポートから隠れていないことを確認します。Ensure the AdControl is not hidden from the viewport. AdControl は、広告が正常に表示されるように、見える必要があります。The AdControl must be visible for ads to display properly.

  8. ApplicationIdAdUnitId の実際の値は、エミュレーターでのテストに使わないようにしてください。Live values for ApplicationId and AdUnitId should not be tested in the emulator. AdControl が想定どおりに機能していることを確認するには、ApplicationIdAdUnitId のどちらについてもテスト値を使ってください。To ensure the AdControl is functioning as expected, use the test values for both ApplicationId and AdUnitId.

  1. 前の「AdControl が表示されない」セクションの手順をすべてもう一度確認します。Double-check all steps in the previous AdControl not appearing section.

  2. ErrorOccurred イベントを処理します。エラーが発生したかどうかと、発生したエラーの種類を特定するイベント ハンドラーに渡されるメッセージを使います。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. 詳しくは、「XAML/C# ウォークスルーでのエラー処理」をご覧ください。See Error handling in XAML/C# walkthrough for more information.

    次の例は、ErrorOccurredイベント ハンドラーを示しています。This example demonstrates an ErrorOccurred event handler. 最初のスニペットは、XAML UI マークアップです。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" />
    

    次の例は、対応する C# コードを示しています。This example demonstrates the corresponding C# code.

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

    ブラック ボックスの原因となる最も一般的なエラーは、"No ad available" です。The most common error that causes a black box is “No ad available.” このエラーは、要求から復帰する利用可能な広告がないことを意味します。This error means there is no ad available to return from the request.

  3. AdControl は正常に動作しています。The AdControl is behaving normally.

    既定では、AdControl は広告を表示できない場合に折りたたまれます。By default, the AdControl will collapse when it cannot display an ad. 他の要素が同じ親の子である場合、これらの他の要素は折りたたまれた AdControl の隙間を埋めるように移動し、次の要求が行われたときに展開できます。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.

広告が更新されないAds not refreshing

  1. IsAutoRefreshEnabled プロパティを確認します。Check the IsAutoRefreshEnabled property. 既定では、この省略可能なプロパティは True に設定されています。By default, this optional property is set to True. False に設定すると、他の広告を取得するために Refresh メソッドを使う必要があります。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. Refresh メソッドの呼び出しを確認します。Check calls to the Refresh method. 自動更新の場合、他の広告を取得するために Refresh を使うことはできません。When using automatic refresh, Refresh cannot be used to retrieve another ad. 手動更新の場合、デバイスの現在のデータ接続に応じて、少なくとも 30 秒から 60 秒経ってから Refresh を呼び出します。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.

    次のコード スニペットは、Refresh メソッドを使う方法の例を示しています。The following code snippets show an example of how to use the Refresh method. 最初のスニペットは、XAML UI マークアップです。The first snippet is the XAML UI markup.

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

    次のコード スニペットは、C# コード ビハインドの UI マークアップの例を示しています。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. AdControl は正常に動作しています。The AdControl is behaving normally. 同じ広告が何度も連続して表示される場合があります。このとき広告は更新されていないように見えます。Sometimes the same ad will appear more than once in a row giving the appearance that ads are not refreshing.

C#C#

AdControl が表示されないAdControl not appearing

  1. Package.appxmanifest で [インターネット (クライアント)] 機能が選択されていることを確認します。Ensure that the Internet (Client) capability is selected in Package.appxmanifest.

  2. AdControl がインスタンス化されていることを確認します。Ensure the AdControl is instantiated. AdControl がインスタンス化されない場合、利用できません。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. アプリケーション ID と広告ユニット ID を確認します。Check the application ID and ad unit ID. これらの Id は、アプリケーション ID とパートナー センターで取得した広告ユニット ID に一致する必要があります。These IDs must match the application ID and ad unit ID that you obtained in Partner Center. 詳しくは、「アプリの広告ユニットをセットアップする」をご覧ください。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. HeightWidth パラメーターを確認します。Check the Height and Width parameters. これらのプロパティは、バナー広告でサポートされている広告サイズのいずれかに設定する必要があります。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. AdControl が親要素に追加されることを確認します。Ensure the AdControl is added to a parent element. 表示するには、AdControl を親コントロールの子として追加する必要があります (たとえば、StackPanel または 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. Margin パラメーターを確認します。Check the Margin parameter. AdControl は表示可能領域の内部にある必要があります。The AdControl must be inside the viewable area.

  7. Visibility プロパティを確認します。Check the Visibility property. 省略可能な Visibility プロパティを 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. AdControl の親を確認します。Check the parent of the AdControl. 親はアクティブな状態で表示されている必要があります。The parent must be active and visible.

  9. ApplicationIdAdUnitId の実際の値は、エミュレーターでのテストに使わないようにしてください。Live values for ApplicationId and AdUnitId should not be tested in the emulator. AdControl が想定どおりに機能していることを確認するには、ApplicationIdAdUnitId のどちらについてもテスト値を使ってください。To ensure the AdControl is functioning as expected, use the test values for both ApplicationId and AdUnitId.

  1. 上記の「AdControl が表示されない」セクションの手順をすべてもう一度確認します。Double-check all steps in the AdControl not appearing section above.

  2. ErrorOccurred イベントを処理します。エラーが発生したかどうかと、発生したエラーの種類を特定するイベント ハンドラーに渡されるメッセージを使います。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. 詳しくは、「XAML/C# ウォークスルーでのエラー処理」をご覧ください。See Error handling in XAML/C# walkthrough for more information.

    次の例は、エラー呼び出しの実装に必要な基本的なコードを示しています。The following examples show the basic code needed to implement an error call. この XAML コードは、エラー メッセージの表示に使う TextBlock を定義します。This XAML code defines a TextBlock that is used to display the error message.

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

    この C# コードは、エラー メッセージを取得し、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;
                };
            }
        }
    }
    

    ブラック ボックスの原因となる最も一般的なエラーは、"No ad available" です。The most common error that causes a black box is “No ad available.” このエラーは、要求から復帰する利用可能な広告がないことを意味します。This error means there is no ad available to return from the request.

  3. AdControl は正常に動作しています。AdControl is behaving normally. 同じ広告が何度も連続して表示される場合があります。このとき広告は更新されていないように見えます。Sometimes the same ad will appear more than once in a row giving the appearance that ads are not refreshing.

広告が更新されないAds not refreshing

  1. AdControlIsAutoRefreshEnabled プロパティが false に設定されているかどうかを確認します。Check whether the IsAutoRefreshEnabled property of your AdControl is set to false. 既定では、この省略可能なプロパティは true に設定されています。By default, this optional property is set to true. false に設定すると、他の広告を取得するために Refresh メソッドを使う必要があります。When set to false, the Refresh method must be used to retrieve another ad.

  2. Refresh メソッドの呼び出しを確認します。Check calls to the Refresh method. 自動更新 (IsAutoRefreshEnabledtrue) の場合、他の広告を取得するために Refresh を使うことはできません。When using automatic refresh (IsAutoRefreshEnabled is true), Refresh cannot be used to retrieve another ad. 手動更新 (IsAutoRefreshEnabledfalse) の場合、デバイスの現在のデータ接続に応じて、少なくとも 30 秒から 60 秒経ってから Refresh を呼び出します。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.

    次の例は、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. AdControl は正常に動作しています。The AdControl is behaving normally. 同じ広告が何度も連続して表示される場合があります。このとき広告は更新されていないように見えます。Sometimes the same ad will appear more than once in a row giving the appearance that ads are not refreshing.