Unityアプリにインタースティシャル広告を追加する

Audience Networkを使用して、AndroidアプリとiOSアプリにFacebook広告を掲載して収益を生み出すことができます。インタースティシャル広告は、アプリのフローで画面が切り替わるとき(例えば、1つのアクティビティから別のアクティビティに移るときや、ゲームでレベルをクリアした後次のレベルに進む前の小休止など)に表示される全画面広告です。クリエイティブコンテンツについては、画像、動画、カルーセルのいずれかを使用できます。このガイドでは、アプリにインタースティシャル広告を追加する方法について説明します。

続行する前に、必ずAudience NetworkのスタートガイドUnityのスタートガイドすべてに目を通しておいてください。

インタースティシャル広告のステップ

ステップ1: インタースティシャル広告オブジェクトを作成する

ステップ2: コールバックイベントを追加する

ステップ3: 広告を読み込む

ステップ4: 広告を表示する

ステップ1: インタースティシャル広告オブジェクトを作成する

インタースティシャル広告を表示するための最初のステップは、GameObjectに添付されているC#スクリプトでInterstitialAdオブジェクトを作成することです。

...
using AudienceNetwork;
...

public class InterstitialAdTest : MonoBehaviour
{
    ...
    private InterstitialAd interstitialAd;
    private bool isLoaded;
    ...

    public void LoadInterstitial()
    {
        this.interstitialAd = new InterstitialAd("YOUR_PLACEMENT_ID");
        this.interstitialAd.Register(this.gameObject);

        // Set delegates to get notified on changes or when the user interacts with the ad.
        this.interstitialAd.InterstitialAdDidLoad = (delegate() {
            Debug.Log("Interstitial ad loaded.");
            this.isLoaded = true;
        });
        interstitialAd.InterstitialAdDidFailWithError = (delegate(string error) {
            Debug.Log("Interstitial ad failed to load with error: " + error);
        });
        interstitialAd.InterstitialAdWillLogImpression = (delegate() {
            Debug.Log("Interstitial ad logged impression.");
        });
        interstitialAd.InterstitialAdDidClick = (delegate() {
            Debug.Log("Interstitial ad clicked.");
        });

        this.interstitialAd.interstitialAdDidClose = (delegate() {
            Debug.Log("Interstitial ad did close.");
            if (this.interstitialAd != null) {
                this.interstitialAd.Dispose();
            }
        });

        // Initiate the request to load the ad.
        this.interstitialAd.LoadAd();
    }
    ...
}

InterstitialAdのコンストラクターのパラメーターは次のとおりです。

  • placementId - このインタースティシャル広告ユニットのAudience Network配置ID。

ステップ2: コールバックイベントを追加する

次に、いくつかのコールバックを実装して、広告のライフサイクルイベントをフォローすることができます。次の例に示すように、イベントのデリゲートを登録して、これらのイベントをリッスンします。

...
// Set delegates to get notified on changes or when the user interacts with the ad.
this.interstitialAd.InterstitialAdDidLoad = (delegate() {
    Debug.Log("Interstitial ad loaded.");
    this.isLoaded = true;
});
interstitialAd.InterstitialAdDidFailWithError = (delegate(string error) {
    Debug.Log("Interstitial ad failed to load with error: " + error);
});
interstitialAd.InterstitialAdWillLogImpression = (delegate() {
    Debug.Log("Interstitial ad logged impression.");
});
interstitialAd.InterstitialAdDidClick = (delegate() {
    Debug.Log("Interstitial ad clicked.");
});

this.interstitialAd.interstitialAdDidClose = (delegate() {
    Debug.Log("Interstitial ad did close.");
    if (this.interstitialAd != null) {
        this.interstitialAd.Dispose();
    }
});
...

Unity Androidで破棄された広告アクティビティのコールバック

これはAndroidにのみ関係します。

現在、Android用Unityゲームで、メインUnity ActivitylaunchModeとしてサポートされているのは、singleTaskのみです。AndroidマニフェストについてはUnityのドキュメントを、アクティビティについてはAndroidのドキュメントを参照してください。

FacebookはActivityを使用してInterstitial広告やRewarded Video広告を表示するため、ユーザーがバックグラウンドでアプリを実行した後、アプリスイッチャーではなくアイコンを使用してそのアプリを再起動すると、広告アクティビティが正しく終了せずに破棄される可能性があります。次のコールバックを使用して、広告がユーザーによって閉じられたかどうかを確認することができます。

インタースティシャルの場合:

this.interstitialAd.interstitialAdDidClose = (delegate() { Debug.Log("Interstitial ad did close."); this.didClose = true; if (this.interstitialAd != null) { this.interstitialAd.Dispose(); } }); #if UNITY_ANDROID /* * Only relevant to Android. * This callback will only be triggered if the Interstitial activity has * been destroyed without being properly closed.This can happen if an * app with launchMode:singleTask (such as a Unity game) goes to * background and is then relaunched by tapping the icon. */ this.interstitialAd.interstitialAdActivityDestroyed = (delegate() { if (!this.didClose) { Debug.Log("Interstitial activity destroyed without being closed first."); Debug.Log("Game should resume."); } }); #endif 

動画リワードの場合:

this.rewardedVideoAd.rewardedVideoAdDidClose = (delegate() { Debug.Log("Rewarded video ad did close."); this.didClose = true; if (this.rewardedVideoAd != null) { this.rewardedVideoAd.Dispose(); } }); #if UNITY_ANDROID /* * Only relevant to Android. * This callback will only be triggered if the Rewarded Video activity * has been destroyed without being properly closed.This can happen if * an app with launchMode:singleTask (such as a Unity game) goes to * background and is then relaunched by tapping the icon. */ this.rewardedVideoAd.rewardedVideoAdActivityDestroyed = (delegate() { if (!this.didClose) { Debug.Log("Rewarded video activity destroyed without being closed first."); Debug.Log("Game should resume. User should not get a reward."); } }); #endif 

ステップ3: 広告を読み込む

InterstitialAdがインスタンス化されたら、次のステップとして広告を読み込みます。これは、InterstitialAdクラスのloadAd()メソッドによって行います。

前出の例では、広告を読み込む方法を示しています。

...
this.interstitialAd.LoadAd();
...

ステップ4: 広告を表示する

最後に、インタースティシャル広告が読み込まれた後、Showメソッドを呼び出して、インタースティシャル広告を画面にレンダリングできます。例えば、ShowInterstitialの関数があれば、インタースティシャル広告を表示するときにこの関数を呼び出すことができます。

// Show button
public void ShowInterstitial()
{
    if (this.isLoaded) {
        this.interstitialAd.Show();
        this.isLoaded = false;

    } else {
        Debug.Log("Interstitial Ad not loaded!");
    }
}

次のステップ

Unityアプリ内で別の広告フォーマットを統合する方法をご確認ください。

アプリを公開して収益を得る準備が整ったら、Audience NetworkのポリシーFacebookコミュニティ規定を順守していることを確認してから、アプリのレビューを申請します。