DFPスタンダード導入方法(広告切替) [Android]


##はじめに
AdMobメディエーションで%での広告の配信比率設定ができなくなって困っている人は多いと思います。
そこで、%での配信比率設定が可能でAdMobよりも高機能なDFPスタンダーの導入方法を説明します。

iPhone版は以下で説明しています。

ここではAndroid版での実装方法のみ解説しますので、DFPスタンダードへの登録、広告枠の作成方法なども
以下を参考にしてください。(iPhone版と特に違いはありません)

[AdMobメディエーションからDFPスタンダードへの移行方法[iOS]](http://qiita.com/ux_design_tokyo/items/49538307a0dff692ba8f)

##前提条件

- SDK Version4.4 Google Mobile Ads
- Android Studio 0.5.5を使用
- Androidのバージョン3.2(13)以上でコンパイル
minSdkVersionは1.5(3)以上


##SDKをDLする

以下で手順でSDKをDLしてください。

Eclipseの場合は以下の公式ドキュメントを参考にしてください。
https://developer.android.com/google/play-services/setup.html


1. AndroidStudioを起動
2. SDK Managerをクリック(以下のアイコンです)

![kobito.1400222876.370073.png](https://qiita-image-store.s3.amazonaws.com/0/27793/7c63eef7-f8b9-3497-9ad6-9b2146717535.png "kobito.1400222876.370073.png")
3. Extrasまでスクロールし、「Google Play services」「Google Repository」にチェックを入れます。
4. installをクリック。
5. ライセンスに同意できれば「Accept License」にチェックを入れてinstallをクリック。
※ Android 2.3以上が必要です。2.2をサポートする場合は「GooglePlay services for Froyo」をインストールする必要があるそうです。

!! Android Studioが古かったのでアップデートしてくださいと言われました。Android Studio 0.5.8へアップデートしました。


##アプリ内にSDKを組み込む

Eclipseの場合は以下の公式ドキュメントを参考にしてください。
https://developer.android.com/google/play-services/setup.html



1. Android Studioを開きます。
2. プロジェクトのbuild.gradleファイルを開きます。
3. dependencies{}に「compile 'com.google.android.gms:play-services:4.3.23'」を追記します。バージョンの部分はインストールしたバージョンに合わせてください。カーソルを合わせるとバージョンが表示されます。

「dependency on play services, but the sdk installation dose not have the "Extras > Google Repository" installes. Open the SDK manager and install it.」と表示される場合は開くbuild.gradleファイルを間違えている可能性が高いです。

~~~:build.gradle

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.3.23'
}
~~~

'4. 以下の「Sync Project」ボタンを押します。

![kobito.1400225161.427027.png](https://qiita-image-store.s3.amazonaws.com/0/27793/75805faf-5bbe-ede9-5c9d-86faf2f53e0f.png "kobito.1400225161.427027.png")
5. AndroidManifest.xmlの< application >エレメント内に追記します。

~~~:AndroidManifest.xml
<meta-data android:name="com.google.android.gms.version"
           android:value="@integer/google_play_services_version" />
 <activity android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
~~~

Permissionsを追記

INTERNETとACCESS_NETWORK_STATEが必要

~~~xml:AndroidManifest.xml
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
~~~

##実装

AdViewを生成してaddViewする方法です。
レイアウトxmlで定義する方法もあります → (Defining a com.google.ads.AdView参照) https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals#android

MY_AD_UNIT_IDは「DFPスタンダードのサイト > 在庫 > utasuma_320x50(作った広告ユニット) > タグを作成 > タグタイプ:モバイルアプリ 」から確認できます。

~~~java:HogeActivity.Activity

import com.google.android.gms.ads.*;

public class HogeActivity extends Activity {
  private AdView adView;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // adView を作成する
    adView = new AdView(this);
    adView.setAdUnitId(MY_AD_UNIT_ID);
    adView.setAdSize(AdSize.BANNER);

    // 属性 android:id="@+id/mainLayout" が与えられているものとして
    // LinearLayout をルックアップする
    LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);

    // adView を追加する
    layout.addView(adView);

    // 一般的なリクエストを行う
    AdRequest adRequest = new AdRequest.Builder().build();

    // 広告リクエストを行って adView を読み込む
    adView.loadAd(adRequest);
  }

  @Override
  public void onPause() {
    adView.pause();
    super.onPause();
  }

  @Override
  public void onResume() {
    super.onResume();
    adView.resume();
  }

  @Override
  public void onDestroy() {
    adView.destroy();
    super.onDestroy();
  }
}

~~~

###まとめ

以上でDFPスタンダードを使って広告が表示できたと思います。
※できない場合はDFPスタンダーのサイトでオーダーの広告申込情報のレートに1を設定してみてください。

DFPスタンダードは高機能が故に設定が複雑ですが便利なツールですので是非使ってみてください。

![device-2014-01-21-121922.png](https://qiita-image-store.s3.amazonaws.com/0/27793/1d5bcb5f-f951-b959-9111-6485d07a8f94.png "device-2014-01-21-121922.png")