ListView と ArrayAdapter を用いた、ビューコンポーネントを使っている場合に簡易に実装が可能です。
RFPInstreamAdAdapter を用いて以下の様に実装し、インフィード広告を表示します。
// (1) 必要なパッケージをインポート
import jp.fout.rfp.android.sdk.RFP;
import jp.fout.rfp.android.sdk.instream.ADVSInstreamAdAdapter;
public class MyActivity extends Activity {
// (2) RFPInstreamAdAdapter の定義
private RFPInstreamAdAdapter<ArrayAdapter> rfpAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
...
// (3) RFP SDK の初期化
RFP.init(this, "YOUR_MEDIA_ID");
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.rowdata, data);
// (4) インフィード広告を差し込みたい adapter と広告枠Id を設定
advsAdapter = RFP.createInstreamAdAdapter(this, arrayAdapter, "YOUR_ADSPOT_ID");
...
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
listView = (ListView) frameLayout.findViewById(R.id.listView);
// (5) インフィード広告を差し込みたい list view に adapter を設定
listView.setAdapter(advsAdapter);
...
}
...
// 媒体様のデータ取得完了を待って
...
// (6) インフィード広告のロードを開始する
rfpAdapter.loadAd();
}
1リクエストあたりの広告案件数と広告位置配列は、RFP の createInstreamAdAdapter(Context context, T originalAdapter, String adSpotId, int adCount, List<Integer>positions)
などのAPIを使ってコントロールすることも出来ます。
インフィード広告を表示する際に、そのイベントを受け取りたい場合があります。
その場合は RFPInstreamAdAdapter に RFPInstreamAdLoadListener をセットします。
RFPInstreamAdAdapter adapter;
RFPInstreamAdLoadListener listener;
//(1) RFPInstreamAdAdapter に listener を設定
adapter.setAdListener(listener);
listener = new RFPInstreamAdLoadListener() {
//(2)広告のロード開始時
@Override
public void instreamAdLoaderDidStartLoadingAd() {
}
//(3)広告のロード完了時
@Override
public void instreamAdLoaderDidFinishLoadingAds() {
}
//(4)広告Viewのメイン画像のロード完了時
@Override
public void instreamAdLoaderDidFinishLoadingMainImage(String imageUrl) {
}
//(5)広告のロード失敗時
@Override
public void instreamAdLoaderDidFailToLoadAdError(String errorString) {
}
//(6)広告Viewのロード失敗時
@Override
public void instreamAdLoaderDidFailToLoadImageError(String errorString) {
}
//(7)広告のクリック処理完了時
@Override
public void instreamAdLoaderDidClick(String redirectUrl) {
}
};
ユーザーがサイト下部に到達した際に追加フィードを読み込むような UI の場合に、追加で広告ロードを行うことも可能です。
public void loadMore() {
// 追加の広告をロードして、広告位置配列をもとにテーブル内の適切な位置に挿入します
advsAdapter.loadAd();
}
// The format looks like this
// -----------------------------------------------------
// | | name |
// | image | ad text |
// | | |
// | 90x90 | |
// | | PR |
// -----------------------------------------------------
// The format looks like this
// -----------------------------------------------------
// | ------- name |
// | | image | PR |
// | | 50x50 | ad text |
// | | | |
// | ------- |
// -----------------------------------------------------
// The format looks like this
// -----------------------------------------------------
// | |
// | ad image |
// | |
// | --------------------------------------------------- |
// | ad text |
// | |
// | |
// | PR |
// | advertiser name |
// -----------------------------------------------------
// The format looks like this
// -----------------------------------------------------
// | advertiser name |
// | PR |
// | ad text |
// | --------------------------------------------------- |
// | |
// | |
// | image |
// | |
// -----------------------------------------------------
// The format looks like this
// -----------------------------------------------------
// | name |
// | PR |
// | --------------------------------------------------- |
// | |
// | |
// | image |
// | |
// | |
// | |
// | --------------------------------------------------- |
// | text |
// -----------------------------------------------------
// The format looks like this
// -----------------------------------------------------
// | name |
// | PR |
// | --------------------------------------------------- |
// | |
// | ad text |
// | |
// | |
// -----------------------------------------------------
HTML を入稿することで、アプリ内 WebView 上で描画することが出来ます。