Native Ads Integration For Android - Hiroaki-Shinoda/Geniee-Android-SDK GitHub Wiki
Android ネイティブ広告の実装
ネイティブ広告では、完成した広告レイアウトを提供するのではなく、広告コンテンツ(部品)を提供することにより、オリジナルデザインで広告を配信する事ができます。タイトルや説明テキスト、アイコンなど、好きなデザインで配信する事が可能です。 広告インプレッション、広告クリックのトラッキングは、広告SDKで処理します。
実装準備
ネイティブ広告の実装準備は、下記スタートガイドから行ってください。
Geniee SDK をプロジェクトにインストールする必要があります。
スタートガイド
クラスとインタフェース
Android ネイティブ広告配信には、下記クラスを使用します。
- GNNativeAdRequest 非同期でネイティブ広告を取得するためのクラス
- GNNativeAd ネイティブ広告の情報を提供するためのクラス
- GNNativeAdRequestListener ネイティブ広告のロード結果を受け取るためのインタフェース
SDK初期化
アプリのグローバルでSDK初期化します。
- グローバルでSDK初期化します。
(例:アプリ起動時初期化をします。)import android.app.Application; import jp.co.geniee.gnadsdk.common.GNAdSDK; public class MyApplication extends Application { GNAdSDK gnadsdk = null; @Override public void onCreate() { GNAdSDK gnadsdk = GNAdSDK.getInstatnce(getApplicationContext()); gnadsdk.init(); } }
ネイティブ広告の取得
-
SDK をプロジェクトに追加します。スタートガイド
-
GNNativeAd
をインポートします。import jp.co.geniee.sdk.ads.nativead.GNNativeAd; import jp.co.geniee.sdk.ads.nativead.GNNativeAdRequest; import jp.co.geniee.sdk.ads.nativead.GNNativeAdRequestListener; import jp.co.geniee.gnadsdk.common.GNAdLogger;
-
GNNativeAdRequestListener
インタフェースを実装します。public class NativeAdSampleActivity extends ListActivity implements GNNativeAdRequestListener { }
-
GNNativeAdRequest
の変数を宣言します。GNNativeAdRequest nativeAdRequest;
-
GNNativeAdRequest
のインスタンスを初期化します。
- 初期化 API
public GNNativeAdRequest(Context context, String zoneids)
- 初期化 API の使用例
nativeAdRequest = new GNNativeAdRequest(this, "YOUR_SSP_APP_ID");
thisパラメータは、アプリのContextを設定します。
YOUR_SSP_APP_ID
は、Geniee内での枠の管理IDを設定します。
-
GNNativeAdRequestListener
インタフェースの実装クラスを設定します。
ネイティブ広告ロードイベントのは、インタフェースの実装クラス経由で通知されます。
GNNativeAdRequestListener
インタフェースの実装した変数を設定します。nativeAdRequest.setAdListener(this);
-
ネイティブ広告をロードします。
nativeAdRequest.loadAds(this);
thisパラメータは、アプリのContextを設定します。
GNNativeAdRequestListener
インタフェースの実装
GNNativeAdRequestListener
のコールバック関数を実装し、
ネイティブ広告のロードイベントの結果を受け取ります。public abstract void onNativeAdsLoaded(GNNativeAd[] nativeAds); public abstract void onNativeAdsFailedToLoad(); public abstract boolean onShouldStartInternalBrowserWithClick(String landingURL);
受信したネイティブ広告GNNativeAd
は、配列のnativeAds
引数で渡されます。
複数ネイティブ広告の振り分け処理には、GNNativeAd
のzoneID
情報で行います。
配列nativeAds
の要素数:
- 1個 GNNativeAdRequest
初期化時、APP_IDを1つ指定した場合
- 複数個 GNNativeAdRequest
初期化時、APP_IDを複数指定した場合
- ListActivity の実装例:
import jp.co.geniee.sdk.ads.nativead.GNNativeAd; import jp.co.geniee.sdk.ads.nativead.GNNativeAdRequest; import jp.co.geniee.sdk.ads.nativead.GNNativeAdRequestListener; import jp.co.geniee.gnadsdk.common.GNAdLogger; public class NativeAdSampleActivity extends ListActivity implements GNNativeAdRequestListener { GNNativeAdRequest nativeAdRequest; @Override public void onCreate(Bundle savedInstanceState) { nativeAdRequest = new GNNativeAdRequest(this, "YOUR_SSP_APP_ID"); nativeAdRequest.setAdListener(this); //nativeAdRequest.setGeoLocationEnable(true); nativeAdRequest.loadAds(this); } @Override public void onNativeAdsLoaded(GNNativeAd[] nativeAds) { for(int i=0; i<nativeAds.length; i++) { queueAds.enqueue(nativeAds[i]); } } @Override public void onNativeAdsFailedToLoad() { Log.w("NativeAdSampleActivity","onNativeAdsFailedToLoad"); } @Override public boolean onShouldStartInternalBrowserWithClick(String landingURL) { Log.i("NativeAdSampleActivity","onShouldStartInternalBrowserWithClick : " + landingURL); return false; }
複数枠の広告の同時取得
-
複数枠の広告を同時に取得するためには、複数枠の APPID を指定してインスタンスを初期化する必要があります。
-
最大10枠の広告を同時取得できます。
-
各 APPID をカンマで区切り、APPID の間はスペースを入れないでください。
nativeAdRequest = new GNNativeAdRequest(this, "APPID1,APPID2,APPID3,...,APPID10");
ネイティブ広告のレンダリング
受信したネイティブ広告の情報に基づいて、ネイティブ広告をレンダリングします。
-
情報データの型は、
GNNativeAd
クラスの定義を参照します。 -
情報データ( String 型)の値が未設定の場合、
""
となります。 -
情報データ(int、double型)の値が未設定の場合、
0
となります。情報の名前 型 情報の内容 zoneID String Geniee内での枠の管理ID advertiser String 広告主の名前 title String feed広告のタイトル description String 広告説明 cta String call to actionの文言 icon_aspectRatio double icon画像の横縦比 icon_url String icon画像のURL icon_height int icon画像の高さ icon_width int icon画像の幅 screenshots_aspectRatio double screenshot画像の横縦比 screenshots_url String screenshot画像のURL screenshots_height int screenshot画像の高さ screenshots_width int screenshot画像の幅 app_appName String アプリの名前 app_appid String アプリのID(ios:数値、Android:パッケージ) app_rating double アプリの評価 app_storeURL String アプリのストアのURL app_targetAge String アプリの対象年齢 -
ListActivity の実装例: 管理画面に下記ネイティブ広告の情報を設定した場合
- title
- description
- icon image URL
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; Object cell = getItem(position); //SDK: Rendering NativeAd content if (cell instanceof GNNativeAd) { holder.textView.setText(((GNNativeAd)cell).title); holder.imageView.setTag(((GNNativeAd)cell).icon_url); new ImageGetTask(holder.imageView, ((GNNativeAd)cell).icon_url).execute(); //SDK: Report impression ((GNNativeAd)cell).onTrackingImpression(); } else { // GNNativeAd以外のセルの表示処理 } return convertView; }
-
ListActivity 実装例のイメージ
ネイティブ広告のインプレッション報告
-
ネイティブ広告がレンダリングされた時、広告のインプレッションを報告します。
-
インプレッション報告済みのネイティブ広告に対して、再度報告ができません。
-
新しい広告表示には、ネイティブ広告を再取得する必要があります。
nativeAd.onTrackingImpression();
ネイティブ広告のクリックトラッキング
-
ネイティブ広告がクリックされた時、広告のランディングページを外部ブラウザで起動します。
nativeAd.onTrackingClick();
-
ListActivity の実装例:
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ListView listView = (ListView)parent; Object cell = listView.getItemAtPosition(position); if (cell instanceof GNNativeAd) { //SDK: Report click ((GNNativeAd)cell).onTrackingClick(); } }
クリックのランディングページ画面遷移の制御
広告のランディングページは、デフォルトで外部ブラウザで起動しますが、
GNNativeAdRequestListener
のコールバック関数を実装し、
ランディングページのURLを使ってアプリ内ブラウザで起動することが可能です。
また、関数の戻り値によって、外部ブラウザの起動を制御します。
true
を返した場合、アプリ側landingURL
をリクエストする必要があります。
-
false 外部ブラウザを起動します。
-
true 外部ブラウザを起動しません。
public boolean onShouldStartInternalBrowserWithClick(String landingURL)
ネイティブ広告の再取得
-
新しい広告表示には、ネイティブ広告を再取得する必要があります。
nativeAdRequest.loadAds(this);