スポット広告

警告

2020 年 6 月 1 日以降、Windows UWP アプリ用の Microsoft の広告の収益化プラットフォームはシャットダウンされます。 詳細情報

このチュートリアルでは、Windows 10とWindows 11用の ユニバーサル Windows プラットフォーム (UWP) アプリとゲームにスポット広告を含める方法について説明します。 C# と C++ を使って JavaScript/HTML アプリと XAML アプリにスポット広告を追加する方法を示す完全なサンプル プロジェクトについては、GitHub の広告サンプルをご覧ください。

スポット広告とは

アプリやゲームの UI の一部分に表示が限定される標準のバナー広告とは異なり、スポット広告は画面全体に表示されます。 通常、ゲームでは、2 つの基本的な形式が使用されます。

  • ペイウォール広告の場合、ユーザーは一定の間隔で広告を視聴する必要があります。 たとえば、ゲームのレベル間に表示される広告が該当します。

    whatisaninterstitial

  • 報酬ベースの広告の場合、ユーザーは明示的に特定のメリット (レベルを完了するためのヒントや追加の時間など) を求めていて、アプリのユーザー インターフェイスから広告を初期化します。

アプリやゲームで使用するために、次の 2 種類のスポット広告が用意されています。ビデオ スポット広告バナー スポット広告です。

注意

スポット広告用の API は、ビデオの再生時を除き、どのようなユーザー インターフェイスも処理しません。 スポット広告をアプリに統合する方法を検討するときは、何をすべきであり何をすべきでないかに関するガイドラインとして、スポットのベスト プラクティスをご覧ください。

前提条件

  • Visual Studio 2015 以降の Visual Studio のリリースと共に Microsoft Advertising SDK をインストールします。 インストール手順については、この記事をご覧ください。

スポット広告をアプリに統合する

アプリでスポット広告を表示するには、次のプロジェクトの種類の指示に従います。

XAML/.NET

ここでは C# の例を紹介していますが、XAML/.NET プロジェクトでは Visual Basic と C++ もサポートされています。 完全な C# コードの例については、「C# を使ったスポット広告のサンプル コード」をご覧ください。

  1. Visual Studio でプロジェクトを開きます。

    注意

    既存のプロジェクトを使用している場合、プロジェクトの Package.appxmanifest ファイルを開き、インターネット (クライアント) 機能が選択されていることを確認します。 アプリでは、テスト広告やライブ広告を受信するためにこの機能が必要になります。

  2. プロジェクトのターゲットが [Any CPU] (任意の CPU) になっている場合は、アーキテクチャ固有のビルド出力 (たとえば、[x86]) を使うようにプロジェクトを更新します。 プロジェクトのターゲットが [Any CPU] (任意の CPU) になっていると、次の手順で Microsoft Advertising ライブラリへの参照を正常に追加できません。 詳しくは、「プロジェクトのターゲットを "Any CPU" に設定すると参照エラーが発生する」をご覧ください。

  3. プロジェクトで Microsoft Advertising SDK への参照を追加します。

    1. [ソリューション エクスプローラー] ウィンドウで、[参照設定] を右クリックし、[参照の追加] を選択します。
    2. [参照マネージャー] で、[Universal Windows] を展開し、[拡張] をクリックして、[Microsoft Advertising SDK for XAML] (バージョン 10.0) の横にあるチェック ボックスをオンにします。
    3. [参照マネージャー] で、[OK] をクリックします。
  4. アプリの適切なコード ファイル (たとえば、MainPage.xaml.cs またはその他のページのコード ファイル) に、次の名前空間の参照を追加します。

    using Microsoft.Advertising.WinRT.UI;
    
  5. アプリ内の適切な場所 (または他のページなど) で MainPage 、インタースティシャル広告のアプリケーション ID と広告ユニット ID を表す 、インタースティシャルAd オブジェクトといくつかの文字列フィールドを宣言します。 次のコード例では、スポット広告のmyAppIdテスト値に フィールドと myAdUnitId フィールドを割り当てます。

    注意

    InterstitialAd に、対応する広告ユニットがあります。広告ユニットは、コントロールに広告を提供するためにサービスで使用されます。すべての広告ユニットは、広告ユニット IDアプリケーション ID で構成されます。 ここでは、広告ユニット ID とアプリケーション ID のテスト値をコントロールに割り当てます。 これらのテスト値は、テスト バージョンのアプリでのみ使用できます。 Microsoft Store にアプリを公開する前に、これらのテスト値をパートナー センターから取得した実際の値に置き換える必要があります。

    InterstitialAd myInterstitialAd = null;
    string myAppId = "d25517cb-12d4-4699-8bdc-52040c712cab";
    string myAdUnitId = "test";
    
  6. 起動時に実行されるコード (たとえば、ページのコンストラクター) 内で、InterstitialAd オブジェクトをインスタンス化し、このオブジェクトのイベント用のイベント ハンドラーを関連付けます。

    myInterstitialAd = new InterstitialAd();
    myInterstitialAd.AdReady += MyInterstitialAd_AdReady;
    myInterstitialAd.ErrorOccurred += MyInterstitialAd_ErrorOccurred;
    myInterstitialAd.Completed += MyInterstitialAd_Completed;
    myInterstitialAd.Cancelled += MyInterstitialAd_Cancelled;
    
  7. ビデオ スポット広告を表示する場合: 広告が必要になる約 30 ~ 60 秒前に、RequestAd メソッドを使用して事前に広告を取得しておきます。 これにより、広告を表示する前に、その広告を要求して準備するための十分な時間が与えられます。 広告の種類として、必ず AdType.Video を指定してください。

    myInterstitialAd.RequestAd(AdType.Video, myAppId, myAdUnitId);
    

    バナー スポット広告を表示する場合: 広告が必要になる約 5 ~ 8 秒前に、RequestAd メソッドを使用して事前に広告を取得しておきます。 これにより、広告を表示する前に、その広告を要求して準備するための十分な時間が与えられます。 広告の種類として、必ず AdType.Display を指定してください。

    myInterstitialAd.RequestAd(AdType.Display, myAppId, myAdUnitId);
    
  8. ビデオ スポット広告やバナー スポット広告を表示するコード内のポイントで、InterstitialAd を表示する準備ができていることを確認してから、Show メソッドを使用して広告を表示します。

    if (InterstitialAdState.Ready == myInterstitialAd.State)
    {
        myInterstitialAd.Show();
    }
    
  9. InterstitialAd オブジェクトのイベント ハンドラーを定義します。

    void MyInterstitialAd_AdReady(object sender, object e)
    {
        // Your code goes here.
    }
    
    void MyInterstitialAd_ErrorOccurred(object sender, AdErrorEventArgs e)
    {
        // Your code goes here.
    }
    
    void MyInterstitialAd_Completed(object sender, object e)
    {
        // Your code goes here.
    }
    
    void MyInterstitialAd_Cancelled(object sender, object e)
    {
        // Your code goes here.
    }
    
  10. アプリをビルドした後テストして、テスト広告が表示されることを確認します。

HTML/JavaScript

次の手順では、Visual Studio で JavaScript 用のユニバーサル Windows プロジェクトを作成済みであり、特定の CPU をターゲットとしているものと想定しています。 完全なコード サンプルについては、「JavaScript を使ったスポット広告のサンプル コード」をご覧ください。

  1. Visual Studio でプロジェクトを開きます。

  2. プロジェクトのターゲットが [Any CPU] (任意の CPU) になっている場合は、アーキテクチャ固有のビルド出力 (たとえば、[x86]) を使うようにプロジェクトを更新します。 プロジェクトのターゲットが [Any CPU] (任意の CPU) になっていると、次の手順で Microsoft Advertising ライブラリへの参照を正常に追加できません。 詳しくは、「プロジェクトのターゲットを "Any CPU" に設定すると参照エラーが発生する」をご覧ください。

  3. プロジェクトで Microsoft Advertising SDK への参照を追加します。

    1. [ソリューション エクスプローラー] ウィンドウで、[参照設定] を右クリックし、[参照の追加] を選択します。
    2. [参照マネージャー] で、[ユニバーサル Windows] を展開し、[拡張] をクリックして、[Microsoft Advertising SDK for JavaScript] (バージョン 10.0) の横にあるチェック ボックスをオンにします。
    3. [参照マネージャー] で、[OK] をクリックします。
  4. プロジェクト内の HTML ファイルの <head> セクションで、プロジェクトの default.css と default.js の JavaScript 参照の後に ad.js への参照を追加します。

    <script src="//Microsoft.Advertising.JavaScript/ad.js"></script>
    
  5. プロジェクト内の .js ファイルで、InterstitialAd オブジェクトと、スポット広告のアプリケーション ID および広告ユニット ID を含む複数のフィールドを宣言します。 次のコード例では、スポット広告のapplicationIdテスト値に フィールドと adUnitId フィールドを割り当てます。

    注意

    InterstitialAd に、対応する広告ユニットがあります。広告ユニットは、コントロールに広告を提供するためにサービスで使用されます。すべての広告ユニットは、広告ユニット IDアプリケーション ID で構成されます。 ここでは、広告ユニット ID とアプリケーション ID のテスト値をコントロールに割り当てます。 これらのテスト値は、テスト バージョンのアプリでのみ使用できます。 Microsoft Store にアプリを公開する前に、これらのテスト値をパートナー センターから取得した実際の値に置き換える必要があります。

    var interstitialAd = null;
    var applicationId = "d25517cb-12d4-4699-8bdc-52040c712cab";
    var adUnitId = "test";
    
  6. 起動時に実行されるコード (たとえば、ページのコンストラクター) 内で、InterstitialAd オブジェクトをインスタンス化し、このオブジェクトのイベント ハンドラーを関連付けます。

    interstitialAd = new MicrosoftNSJS.Advertising.InterstitialAd();
    interstitialAd.onErrorOccurred = errorOccurredHandler;
    interstitialAd.onAdReady = adReadyHandler;
    interstitialAd.onCancelled = cancelledHandler;
    interstitialAd.onCompleted = completedHandler;
    
  7. ビデオ スポット広告を表示する場合: 広告が必要になる約 30 ~ 60 秒前に、RequestAd メソッドを使用して事前に広告を取得しておきます。 これにより、広告を表示する前に、その広告を要求して準備するための十分な時間が与えられます。 広告の種類として、必ず InterstitialAdType.video を指定してください。

    if (interstitialAd) {
        interstitialAd.requestAd(MicrosoftNSJS.Advertising.InterstitialAdType.video, applicationId, adUnitId);
    }
    

    バナー スポット広告を表示する場合: 広告が必要になる約 5 ~ 8 秒前に、RequestAd メソッドを使用して事前に広告を取得しておきます。 これにより、広告を表示する前に、その広告を要求して準備するための十分な時間が与えられます。 広告の種類として、必ず InterstitialAdType.display を指定してください。

    if (interstitialAd) {
        interstitialAd.requestAd(MicrosoftNSJS.Advertising.InterstitialAdType.display, applicationId, adUnitId);
    }
    
  8. 広告を表示するコード内のポイントで、InterstitialAd の表示準備が整っていることを確認した後、Show メソッドを使用して広告を表示します。

    if (interstitialAd && interstitialAd.state === MicrosoftNSJS.Advertising.InterstitialAdState.ready) {
        interstitialAd.show();
    }
    
  9. InterstitialAd オブジェクトのイベント ハンドラーを定義します。

    function adReadyHandler(sender) {
      // Your code goes here.
    }
    
    function errorOccurredHandler(sender, args) {
      // Your code goes here.
    }
    
    function completedHandler(sender) {
      // Your code goes here.
    }
    
    function cancelledHandler(sender) {
      // Your code goes here.
    }
    
  10. アプリをビルドした後テストして、テスト広告が表示されることを確認します。

C++ (DirectX Interop)

このサンプルでは、Visual Studio で C++ DirectX および XAML アプリ (ユニバーサル Windows) プロジェクトを作成済みであり、特定の CPU アーキテクチャをターゲットとしているものと想定しています。  

  1. Visual Studio でプロジェクトを開きます。

  2. プロジェクトで Microsoft Advertising SDK への参照を追加します。

    1. [ソリューション エクスプローラー] ウィンドウで、[参照設定] を右クリックし、[参照の追加] を選択します。
    2. [参照マネージャー] で、[Universal Windows] を展開し、[拡張] をクリックして、[Microsoft Advertising SDK for XAML] (バージョン 10.0) の横にあるチェック ボックスをオンにします。
    3. [参照マネージャー] で、[OK] をクリックします。
  3. アプリの適切なヘッダー ファイル (例: DirectXPage.xaml.h) 内で、InterstitialAd オブジェクトと関連するイベント ハンドラー メソッドを宣言します。

    Microsoft::Advertising::WinRT::UI::InterstitialAd^ m_interstitialAd;
    void OnAdReady(Object^ sender, Object^ args);
    void OnAdCompleted(Object^ sender, Object^ args);
    void OnAdCancelled(Object^ sender, Object^ args);
    void OnAdError(Object^ sender, Microsoft::Advertising::WinRT::UI::AdErrorEventArgs^ args);
    
  4. 同じヘッダー ファイル内で、スポット広告のアプリケーション ID と広告ユニット ID を表す複数の文字列フィールドを宣言します。 次のコード例では、スポット広告のmyAppIdテスト値に フィールドと myAdUnitId フィールドを割り当てます。

    注意

    InterstitialAd に、対応する広告ユニットがあります。広告ユニットは、コントロールに広告を提供するためにサービスで使用されます。すべての広告ユニットは、広告ユニット IDアプリケーション ID で構成されます。 ここでは、広告ユニット ID とアプリケーション ID のテスト値をコントロールに割り当てます。 これらのテスト値は、テスト バージョンのアプリでのみ使用できます。 Microsoft Store にアプリを公開する前に、これらのテスト値をパートナー センターから取得した実際の値に置き換える必要があります。

    Platform::String^ myAppId = L"d25517cb-12d4-4699-8bdc-52040c712cab";
    Platform::String^ myAdUnitId = L"test";
    
  5. スポット広告を表示するためのコードを追加する .cpp file に、次の名前空間の参照を追加します。 次の例では、アプリの DirectXPage.xaml.cpp ファイルにそのコードを追加しているものと想定しています。

    using namespace Microsoft::Advertising::WinRT::UI;
    
  6. 起動時に実行されるコード (たとえば、ページのコンストラクター) 内で、InterstitialAd オブジェクトをインスタンス化し、このオブジェクトのイベント用のイベント ハンドラーを関連付けます。 次の例では、InterstitialAdSamplesCpp がプロジェクトの名前空間です。コードでは、必要に応じてこの名前を変更します。

    m_interstitialAd = ref new InterstitialAd();         
    m_interstitialAd->AdReady += ref new Windows::Foundation::EventHandler<Platform::Object ^>
        (this, &InterstitialAdSamplesCpp::DirectXPage::OnAdReady);
    m_interstitialAd->Completed += ref new Windows::Foundation::EventHandler<Platform::Object ^>
        (this, &InterstitialAdSamplesCpp::DirectXPage::OnAdCompleted);
    m_interstitialAd->Cancelled += ref new Windows::Foundation::EventHandler<Platform::Object ^>
        (this, &InterstitialAdSamplesCpp::DirectXPage::OnAdCancelled);
    m_interstitialAd->ErrorOccurred += ref new
        Windows::Foundation::EventHandler<Microsoft::Advertising::WinRT::UI::AdErrorEventArgs ^>
        (this, &InterstitialAdSamplesCpp::DirectXPage::OnAdError);
    
  7. ビデオ スポット広告を表示する場合: スポット広告が必要になる約 30 ~ 60 秒前に、RequestAd メソッドを使用して事前に広告を取得しておきます。 これにより、広告を表示する前に、その広告を要求して準備するための十分な時間が与えられます。 広告の種類として、必ず AdType::Video を指定してください。

    m_interstitialAd->RequestAd(AdType::Video, myAppId, myAdUnitId);
    

    バナー スポット広告を表示する場合: 広告が必要になる約 5 ~ 8 秒前に、RequestAd メソッドを使用して事前に広告を取得しておきます。 これにより、広告を表示する前に、その広告を要求して準備するための十分な時間が与えられます。 広告の種類として、必ず AdType::Display を指定してください。

    m_interstitialAd->RequestAd(AdType::Display, myAppId, myAdUnitId);
    
  8. 広告を表示するコード内のポイントで、InterstitialAd の表示準備が整っていることを確認した後、Show メソッドを使用して広告を表示します。

    if ((InterstitialAdState::Ready == m_interstitialAd->State))
    {
        m_interstitialAd->Show();
    }
    
  9. InterstitialAd オブジェクトのイベント ハンドラーを定義します。

    void DirectXPage::OnAdReady(Object^ sender, Object^ args)
    {
        // Your code goes here.
    }
    
    
    void DirectXPage::OnAdCompleted(Object^ sender, Object^ args)
    {
        // Your code goes here.
    }
    
    void DirectXPage::OnAdCancelled(Object^ sender, Object^ args)
    {
        // Your code goes here.
    }
    
    void DirectXPage::OnAdError(Object^ sender, Microsoft::Advertising::WinRT::UI::AdErrorEventArgs^ args)
    {
        // Your code goes here.
    }
    
  10. アプリをビルドした後テストして、テスト広告が表示されることを確認します。

ライブ広告を表示するアプリをリリースする

  1. アプリでのスポット広告の使用方法がスポット広告のガイドラインに従っていることを確認します。

  2. パートナー センターで [アプリ内広告] に進み、広告ユニットを作成します。 表示するスポット広告の種類に応じて、広告ユニットの種類として、[ビデオ (スポット)] または [バナー (スポット)] を選択します。 広告ユニット ID とアプリケーション ID の両方をメモしておきます。

    注意

    テスト広告ユニットとライブ UWP 広告ユニットでは、アプリケーション ID の値の形式が異なります。 テスト アプリケーション ID の値は GUID です。 パートナー センターでライブ UWP 広告ユニットを作成する場合、広告ユニットのアプリケーション ID の値は、アプリの Store ID と常に一致します (Store ID の例は 9NBLGGH4R315 です)。

  3. 必要に応じて、[アプリ内広告] ページの [仲介設定] セクションで設定を構成することで、InterstitialAd の広告仲介を有効にできます。 広告仲介を使うと、複数の広告ネットワークから広告を表示して、広告収益とアプリ プロモーションの機能を最大限に引き出すことができます。表示される広告には、Taboola や Smaato などの他の有料広告ネットワークからの広告や、Microsoft のアプリ プロモーション キャンペーン用の広告などが含まれます。

  4. コードで、広告ユニットのテスト値を、パートナー センターで生成した実際の値に置き換えます。

  5. パートナー センターを使用して Microsoft Store にアプリを申請します。

  6. パートナー センターで広告パフォーマンス レポートを確認します。

アプリで複数のスポット広告コントロールの広告ユニットを管理します。

1 つのアプリに複数の InterstitialAd コントロールを使用できます。 このシナリオでは、各コントロールに異なる広告ユニットを割り当てることをお勧めします。 各コントロールに異なる広告ユニットを使用することで、別々に仲介の設定を構成して、個別の報告データを取得することが可能です。 また、これにより、Microsoft のサービスはアプリに提供する広告を最適化できます。

重要

各広告ユニットは 1 つのアプリのみで使用できます。 同じ広告ユニットを複数のアプリで使うと、その広告ユニットには広告が配信されません。