-
Notifications
You must be signed in to change notification settings - Fork 0
インフィード広告実装のベストプラクティス
Your Name edited this page Dec 16, 2020
·
1 revision
広告の視認性確保のため、以下を目安に実装をお願いします。
- 縦画面: 動画広告の横幅が画面横幅の50%以上であること
- 横画面: 動画広告の横幅が画面横幅の25%以上であること
※上記基準を下回る場合は、広告の配信が停止される可能性がございますので、ご了承ください。
- 現在、複数枠には対応していません。
- 広告枠IDを使いまわすことも可能ですが、1画面で1箇所の設置を推奨します。
- また、設置箇所ごとのレポートは参照できず合算されます。
- 同一ページや1アプリ内で複数設置する場合は、メモリー負荷や通信量を抑制するため、不要なインスタンスは破棄することを推奨します。
// 画面サイズと画面の左下座標を取得
cocos2d::Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
// 広告の横幅
int p_width = 160;
// 広告の高さ
int p_height = p_width * 9/16;
// 左下の座標原点(origin.xおよびorigin.y)から、広告枠の左上の頂点までの距離を算出
float p_x = visibleSize.width *0.5 - p_width *0.5;
float p_y = visibleSize.height *0.5 + p_height *0.5;
Adfurikun::ADFNativeAd::setConvertFrame(NATIVE_AD_APPID, visibleSize.width, visibleSize.height, p_x, p_y, p_width, p_height);
}
cocos2d::Size visibleSize = Director::getInstance()->getVisibleSize();
Adfurikun::ADFNativeAd::setFrameGravity(NATIVE_AD_APPID, visibleSize.width, visibleSize.height, ADFURIKUN_NATIVE_VIEW_W, ADFURIKUN_NATIVE_VIEW_W * 9/16, Adfurikun::ADFNativeAd::H_CENTER, Adfurikun::ADFNativeAd::V_CENTER);
cocos2d::Size visibleSize = Director::getInstance()->getVisibleSize();
// 水平方向と垂直方向の掲載位置を変更することで、画面の上部や右端などに広告を表示することが可能
// 詳細はサンプルコードをご覧ください
Adfurikun::ADFNativeAd::setFrameGravity(NATIVE_AD_APPID, visibleSize.width, visibleSize.height, ADFURIKUN_NATIVE_VIEW_W, ADFURIKUN_NATIVE_VIEW_W * 9/16, Adfurikun::ADFNativeAd::H_CENTER, Adfurikun::ADFNativeAd::V_BOTTOM);
cocos2d::Size visibleSize = Director::getInstance()->getVisibleSize();
int p_height = visibleSize.width * 9/16;
// 画面の掲載位置を変えることで、上部や中央にも表示することが可能
Adfurikun::ADFNativeAd::setFitWidthFrame(NATIVE_AD_APPID, visibleSize.height, p_height,Adfurikun::ADFNativeAd::V_BOTTOM);
成功のコールバックが返されて、広告の取得が完了したら、開発者の任意のタイミングで動画の再生を行うことが可能です。
*初回の動画再生はshowAdメソッドを実行しないと動画が再生されないので、注意してください
動画ネイティブ広告(View)は、表示エリア内において(コンテンツ領域とタイトルバーを含んだエリア)、広告Viewの可視域が60%以上の時のみ動画を再生し、60%未満の場合は自動で再生を停止します。
したがって、スクロールなどで広告が隠れて、広告の見えている部分が60%未満になったタイミングで動画の再生が自動で停止されて、再び60%以上表示されたタイミングで自動的に再生が再開されます。
ただし、pauseVideoメソッドで動画の再生が一時停止されている場合は、60%以上が画面に表示されていても自動で動画の再生は開始されません。また、動画の停止中は案件の自動更新も同じく一時的に停止します。
*なお、この機能はAndroidの場合、OS3.2以上の端末のみ提供となります。iOSの場合は、OSのバージョン関係なくこの機能は提供されております。
※AndroidManifest.xmlの動画ネイティブ広告を表示するActivityの項目に、以下の内容を設定してください。
android:hardwareAccelerated="true"
静止画広告SDKのバナー機能を動画広告SDKに統合した時に広告の自動切り替え機能が破棄され、 アプリ側から実装する必要になったため、実装方法を参考してください。
●広告枠IDを指定し、初期化処理を開始
Adfurikun::ADFBanner::initializeWithAppID(広告枠ID, 0, 0, width, height);
●指定したクラスにコールバッククラスを継承する (シーンのヘッダ 例)
class HelloAdfurikunBanner : public cocos2d::LayerColor, public Adfurikun::ADFBannerDelegate{
public:
// コールバック
void onBannerLoadFinish(const char * appID);
void onBannerLoadError(const char * appID, int errorCode);
void onBannerPlayStart(const char * appID);
void onBannerPlayFinish(const char * appID, bool isVideoAd);
void onBannerPlayFail(const char * appID, int errorCode);
void onBannerClicked(const char * appID);
}
●コールバックを設定
Adfurikun::ADFBanner::setDelegate(広告枠ID, this);
●広告を読み込む
Adfurikun::ADFBanner::load(広告枠ID);
●広告取得リクエストの成否に関しての通知を受け取る
/** 広告のロードが完了 */
void HelloAdfurikunBanner::onBannerLoadFinish(const char* appID) {
// リトライカウントを初期化
loadRetryCount = 0;
// 広告をセットアップ
cocos2d::Size visibleSize = Director::getInstance()->getVisibleSize();
Adfurikun::ADFBanner::setFrameGravity(BANNER_APPID, visibleSize.width, visibleSize.height, width, height, Adfurikun::ADFBanner::H_CENTER, Adfurikun::ADFBanner::V_CENTER);
// 広告を表示
Adfurikun::ADFBanner::showAd(広告枠ID);
// 60秒後に再ロードを行う
Director::getInstance()->getScheduler()->schedule(schedule_selector(HelloAdfurikunBanner::load), this, 60.0f, false);
}
/** 広告のロードが失敗 */
void HelloAdfurikunBanner::onBannerLoadError(const char* appID, int errorCode) {
// エラーの確認および広告表示のリトライ処理
if (loadRetryCount < 5) {
Adfurikun::ADFBanner::load(広告枠ID);
}
loadRetryCount++;
}