スポット広告

警告

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

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

スポット広告とは

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

  • Paywall広告では、ユーザーは一定の間隔で広告を視聴する必要があります。 たとえば、ゲーム レベル間では次のようになります。

    whatisaninterstitial

  • Rewards Based ではユーザーはレベルを完了するためのヒントや余分な時間など、何らかの利点を明示的に求め、アプリのユーザー インターフェイスを使用して広告を初期化します。

アプリとゲームで使用するスポット広告には、インタースティシャル動画広告インタースティシャル バナー広告の 2 種類があります。

Note

スポット広告用 API は、ビデオ再生時を除き、ユーザー インターフェイスを処理しません。 アプリにスポット広告を統合する方法を検討する場合は、のベスト プラクティスに関するガイドラインを参照してください。

前提条件

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

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

XAML/.NET

このセクションでは C# の例を示しますが、VISUAL Basic と C++ は XAML/.NET プロジェクトでもサポートされています。 完全な C# コード例については、C#Interstitial ad サンプル コードを参照してください。

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

    Note

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

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

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

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

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

    Note

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

    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 の Interstitial ad サンプル コードを参照してください。

  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 フィールドを テスト値 に割り当てます。

    Note

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

    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 相互運用)

このサンプルでは、Visual Studio で C++ DirectX および XAML アプリ (ユニバーサル Windows) プロジェクトを作成し、特定の CPU アーキテクチャを対象としていることを前提としています。  

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

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

    1. [ソリューション エクスプローラー] ウィンドウで、[参照設定] を右クリックし、[参照の追加] を選択します。
    2. Reference Managerで、Universal Windowsを展開し、Extensionsをクリックし、XAML 用 Microsoft Advertising SDK (バージョン 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 フィールドを テスト値 に割り当てます。

    Note

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

    Platform::String^ myAppId = L"d25517cb-12d4-4699-8bdc-52040c712cab";
    Platform::String^ myAdUnitId = L"test";
    
  5. スポット広告を表示するコードを追加する.cpp ファイルに、次の名前空間参照を追加します。 次の例では、アプリ内の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::D isplay を指定してください。

    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 の両方をメモしておきます。

    Note

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

  3. 必要に応じて、In-app ads ページの Mediation 設定 セクションの設定を構成することで、InterstitialAd の広告仲介を有効にすることができます。 広告仲介を使用すると、複数の広告ネットワークからの広告を表示することで、広告の収益とアプリのプロモーション機能を最大化できます。これには、タブーラや Smaato などの他の有料広告ネットワークからの広告や、Microsoft アプリプロモーション キャンペーン用の広告が含まれます。

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

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

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

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

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

重要

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