Skip to content

インフィード広告実装のベストプラクティス

Kim, Sungil edited this page Sep 4, 2023 · 4 revisions

実装ガイドライン

サイズ目安について

広告の視認性確保のため、以下を目安に実装をお願いします。

  • 縦画面: 動画広告の横幅が画面横幅の50%以上であること
  • 横画面: 動画広告の横幅が画面横幅の25%以上であること

※上記基準を下回る場合は、広告の配信が停止される可能性がございますので、ご了承ください。

複数表示について

  • 現在、複数枠には対応していません。
  • 広告枠IDを使いまわすことも可能ですが、1画面で1箇所の設置を推奨します。
  • また、設置箇所ごとのレポートは参照できず合算されます。
  • 同一ページや1アプリ内で複数設置する場合は、メモリー負荷や通信量を抑制するため、不要なインスタンスは破棄することを推奨します。

表示位置・サイズの変更

AdfurikunNativeAdViewUtilityのsetNativeAdViewFrame APIはデバイスによって表示位置・サイズの違いを統一して表示することができます。

AdfurikunNativeAdViewUtility nativeAdViewUtility = GameObject.Find("AdfurikunNativeAdViewUtility").GetComponent<AdfurikunNativeAdViewUtility>();
nativeAdViewUtility.setNativeAdViewFrame(0, 0, 100, 100);

掲載位置指定

AdfurikunNativeAdViewUtilityのsetFrameGravity 及び setFitWidthFrame APIは掲載位置を指定して表示する機能を提供します。

public void setFrameGravity (string appId, float displaySizeW, float displaySizeH, float width, float height, int horizontalGravity, int verticalGravity)
指定した掲載位置及びサイズで、動画広告を表示する
@param string appID 広告枠ID
@param float visibleSizeW 表示画面のサイズ()
ex). Director::getInstance()->getVisibleSize()で取得したsizeオブジェクトの幅
@param float visibleSizeH 表示画面のサイズ(高さ)
ex). Director::getInstance()->getVisibleSize()で取得したsizeオブジェクトの高さ
@param float width 広告枠の横幅
@param float height 広告枠の高さ
@param int horizontalGravity 水平方向での広告の掲載位置
ex).
0 : 画面の左端
1 : 画面中央
2 : 画面の右端

@param int verticalGravity 垂直方向での広告の掲載位置
ex).
0 : 画面上部
1 : 画面中央
2 : 画面下部


public void setFitWidthFrame (string appId, float displaySizeH, float height, int verticalGravity)
広告をアスペクト比を維持したまま、画面の横幅いっぱいまで広げて表示させます。
@param string appId ... 広告枠ID
@param float visibleSizeH ... 表示画面の高さ
ex). Director::getInstance()->getVisibleSize()で取得したsizeオブジェクトの高さ
@param float height ... 広告枠の高さ
@param int verticalGravity ... 垂直方向での広告の掲載位置
ex).
0 : 画面上部
1 : 画面中央
2 : 画面下部

広告の自動切り替えの実装方法

静止画広告SDKのバナー機能を動画広告SDKに統合した時に広告の自動切り替え機能が破棄され、 アプリ側から実装する必要になったため、実装方法を参考してください。

// アドフリくんのGameObjectを取得
GameObject bannerObject = GameObject.Find("AdfurikunBannerUtility");

// デリゲートを設定
private AdfurikunBannerUtility bannerUtility = bannerObject.GetComponent.<AdfurikunBannerUtility>();
if (Application.platform == RuntimePlatform.Android)
{
    bannerUtility.initializeBannerView(広告サイズ, 広告サイズ);
}
bannerUtility.onLoadFinish = this.OnLoadFinish;
bannerUtility.onLoadError = this.OnLoadError;
bannerUtility.onPlayStart = this.OnPlayStart;
bannerUtility.onPlayFinish = this.OnPlayFinish;
bannerUtility.onPlayError = this.OnPlayError;
bannerUtility.onClicked = this.OnClicked;

/*
自動切り替えロード
*/
void AutoRefreshLoad()
{
    if (bannerUtility != null)
    {
	// 広告をロード
	bannerUtility.loadBannerView();
    }
}

/*
広告ビューをセットアップ
*/
private void setupView()
{
    if (bannerUtility != null) 
    {
	// ビューをセットアップする
	x = (Screen.width - width) / 2;
	y = (Screen.height / 2) - (height / 2);
	bannerUtility.setBannerView(x, y, width, height);
    }
}

/*
広告準備完了時
*/
void OnLoadFinish(string appId)
{
    // リトライカウントを初期化
    mLoadRetryCount = 0;
    // 広告ビューをセットアップ
    setupView();
    // 広告を表示する
    if (bannerUtility != null)
    {
	bannerUtility.playBannerView();
    }
    // 60秒後に再ロードを行う
    Invoke("AutoRefreshLoad", 60);
}

/*
広告準備失敗時
*/
void OnLoadError(string appId, int errorCode)
{
    // エラーの確認および広告表示のリトライ処理
    if (mLoadRetryCount < 5)
    {
	AutoRefreshLoad();
    }
    mLoadRetryCount++;
}
Clone this wiki locally