-
Notifications
You must be signed in to change notification settings - Fork 0
COMPASS SDK for Android Apps
-
対象 OS
API レベル 16 以上 -
最新の Android Studio を使用
-
利用する Google Play Services ライブラリ
- Base Client Library
- Google Location and Activity Recognition (位置情報を利用する場合)
- Google Mobile Ads (AdMob Mediation を利用する場合)
ダウンロードしたファイルを解凍し, COMPASS SDK と COMPASS SDK が利用しているライブラリを導入する.
位置情報を利用する場合, Google Location and Activity Recognition のライブラリを導入するため, build.gradle (Module:app) に以下を追加する. ライブラリは最新版を利用すること.
dependencies {
compile project(':compasssdk')
compile 'com.google.android.gms:play-services-base:10.2.0'
// 位置情報を利用する場合
compile 'com.google.android.gms:play-services-location:10.2.0'
}
AdMob Mediation を利用する場合, Google Mobile Ads のライブラリを導入するため, build.gradle (Module:app) に以下を追加する. ライブラリは最新版を利用すること.
dependencies {
compile project(':compasssdk')
compile 'com.google.android.gms:play-services-base:10.2.0'
// AdMob Mediation を利用する場合
compile 'com.google.android.gms:play-services-ads:10.2.0'
}

-
strings.xml に使用する広告枠コードを追加する
インライン広告枠を使用する場合に以下を設定
<string name="inline_spot_id">発行されたインライン広告枠コード</string>
インターステシャル広告を使用する場合に以下を設定
<string name="interstitial_spot_id">発行されたインターステシャル広告枠コード</string>
-
AndroidManifest.xml にユーザパーミッションを追加する
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-
AndroidManifest.xml にメタデータを追加する
インライン広告枠を使用する場合に以下を設定
<meta-data android:value="@string/inline_spot_id" android:name="CompassSDKInlineSpotID" />
インターステシャル広告枠を使用する場合に以下を設定
<meta-data android:value="@string/interstitial_spot_id" android:name="CompassSDKInterstitialSpotID" />
-
「ビルド」→「Clean Project」を選択し, クリーンビルドを行う

(Android 4.2.2 以前を対象としたはアプリ一つの View に対して 10 以下の広告数にすること)
-
インライン広告を表示させる場所の XML レイアウトに FrameLayout を挿入して ID などを設定する
<FrameLayout android:id="@+id/compassInlineFrame" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="10dp" />
-
インライン広告を表示させる場所の Java ファイルに以下のクラスをインポートする
import jp.microad.compass.smartphone.sdk.android.CompassError; import jp.microad.compass.smartphone.sdk.android.CompassInlineFragment; import jp.microad.compass.smartphone.sdk.android.CompassInlineViewCallback;
-
上記にインポートされたクラスのインターフェイスを実装する
public class 〇〇 extends 〇〇 implements CompassInlineViewCallback { . . . }
-
メンバ変数に以下の宣言を追加する
CompassInlineFragment compassInlineFragment;
-
インライン広告の読み込みを行い広告を表示する
COMPASS SDK に位置情報を渡さないで広告を表示する場合は, 以下の処理を追加する
compassInlineFragment = CompassInlineFragment.load(activity, R.id.compassInlineFrame);
COMPASS SDK に位置情報を渡して広告を表示する場合は, 以下の処理を追加する
compassInlineFragment = CompassInlineFragment.load(activity, R.id.compassInlineFrame, location);
-
onActivityResult メソッドに以下のの処理を追加する
if (compassInlineFragment != null) { compassInlineFragment.onActivityResult(requestCode, resultCode, data); }
-
CompassInlineViewCallback のメソッドを実装する
@Override public void onLoadSuccess(int i) { // 広告をロードが成功した場合の処理 // 不要であればこのメソッドを空にしてください } @Override public void onShow(int i) { // 広告をロードが成功した場合の処理 // 不要であればこのメソッドを空にしてください } @Override public void onLoadFailure(int i, CompassError.Code code, Throwable throwable) { // 広告をロードが成功した場合の処理 // 不要であればこのメソッドを空にしてください }

| メソッド名 | 引数 | 引数概要 | 戻り値 | 概要 |
|---|---|---|---|---|
| load | activity:FragmentActivity layoutId:int |
広告表示するアクティビティ, レイアウト ID |
CompassInlineFragment | インライン広告を読み込むメソッド |
| load | activity:FragmentActivity layoutId:int location:Location |
広告表示するアクティビティ, レイアウト ID 位置情報 |
CompassInlineFragment | インライン広告を位置情報を設定して読み込むメソッド |
| redraw | activity:FragmentActivity layoutId:int |
広告表示するアクティビティ, レイアウト ID |
void | 広告の再描画を行うメソッド |
| getRotationSecond | - | - | int | rotation の時間を取得する |
| setSpotId | layoutId:int spotId:String |
新しい spotID を設定するレイアウト ID, 新しく設定するインライン広告用の spotID |
void | 新しい spotID を設定する |
| clearSpotId | - | - | void | XML ファイルで設定している spotID に戻す |
- Activity の干渉を受けるため, 画面の再描画が起きると広告が消えます.
- 親要素の View 構成に影響を受けます.(表示領域など)
- 広告の再描画を行う場合は redraw メソッドを使用します. この際は IMP も再計測されます.
- ListView アプリでご利用の際は Webview 単体版にて実装をお願いします.
- ListView 内に同一広告 ID で複数表示することも可能です.
実装方法は下記通りになります
-
対象の XML レイアウトに WebView を挿入して ID などを設定する
<WebView android:id="@+id/webview" android:layout_width="wrap_content" android:layout_height="wrap_content" />
-
対象の Java ファイルに以下のクラスをインポートする
import jp.microad.compass.smartphone.sdk.android.CompassWebViewCreator;
-
メンバ変数に以下の宣言を追加する
CompassWebViewCreator compassWebViewCreator = new CompassWebViewCreator();
-
表示させたいタイミングで以下の処理を呼び出す
COMPASS SDKに 位置情報を渡さないで広告を表示する場合は, 以下の処理を追加する
compassWebViewCreator.displayAds(webview, webviewPosition, context, spotId);
COMPASS SDK に位置情報を渡して広告を表示する場合は, 以下の処理を追加する
compassWebViewCreator.displayAds(webview, webviewPosition, context, spotId, location);

| メソッド名 | 引数 | 引数概要 | 戻り値 | 概要 |
|---|---|---|---|---|
| displayAds | webView:WebView webViewNo:int context:Context spotID:String |
広告を表示する WebView, WebView の連番, コンテキスト, SpotID |
void | 広告を表示するメソッド |
| displayAds | webView:WebView webViewNo:int context:Context spotID:String location:Location |
広告を表示する WebView, WebView の連番, コンテキスト, SpotID, 位置情報 |
void | 位置情報を設定して広告を表示するメソッド |
インターステシャル広告を使用する場合に設定する
-
インターステシャル広告を表示させる場所の Java ファイルに以下のクラスをインポートする
import jp.microad.compass.smartphone.sdk.android.CompassError; import jp.microad.compass.smartphone.sdk.android.CompassInterstitialFragment; import jp.microad.compass.smartphone.sdk.android.CompassInterstitialViewCallback;
-
上記にインポートされたクラスのインターフェイスを実装する
public class 〇〇 extends 〇〇 implements CompassInterstitialViewCallback { . . . }
-
メンバ変数に以下の宣言を追加する
CompassInterstitialFragment compassInterstitialFragment;
-
インターステシャル広告を表示させたいタイミングに, 以下の処理を追加する
COMPASS SDK に位置情報を渡さないで広告を表示する場合は, 以下の処理を追加する
compassInterstitialFragment = CompassInterstitialFragment.showAd(activity);
COMPASS SDK に位置情報を渡して広告を表示する場合は, 以下の処理を追加する
compassInterstitialFragment = CompassInterstitialFragment.showAd(activity, location);
-
onActivityResult メソッドに以下の処理を挿入する
if (compassInterstitialFragment != null) { compassInterstitialFragment.onActivityResult(requestCode, resultCode, data); }
-
CompassInterstitialViewCallback のメソッドを実装する
@Override public void onLoadSuccess(int i) { // 広告をロードが成功した場合の処理 // 不要であればこのメソッドを空にしてください } @Override public void onShow(int i) { // 広告をロードが成功した場合の処理 // 不要であればこのメソッドを空にしてください } @Override public void onLoadFailure(int i, CompassError.Code code, Throwable throwable) { // 広告をロードが成功した場合の処理 // 不要であればこのメソッドを空にしてください } @Override public void onDismiss(final int id) { // インターステシャル広告を閉じた場合の処理 // 不要であればこのメソッドを空にしてください }

| メソッド名 | 引数 | 引数概要 | 戻り値 | 概要 |
|---|---|---|---|---|
| showAd | activity:FragmentActivity layoutId:int |
広告表示するアクティビティ, レイアウト ID |
CompassInterstitialFragment | インターステシャル広告の表示を行うメソッド |
| showAd | activity:FragmentActivity layoutId:int location:Location |
広告表示するアクティビティ, レイアウト ID, 位置情報 |
CompassInterstitialFragment | インターステシャル広告の表示を位置情報を設定して行うメソッド |
| dismiss | - | - | void | ポップアップウィンドウを閉じる |
| getRotationSecond | - | - | int | rotation の時間を取得する |
| setSpotId | spotId:String | 新しく設定するインターステシャル広告用の spotID | void | 新しい spotId を設定する |
| clearSpotId | - | - | void | XML ファイルで設定している spotID に戻す |
COMPASS SDK では, 以下のエラーメッセージを出力します
| タグ名 | メッセージ | 詳細 |
|---|---|---|
| MainActivity | INVALID_AD_TYPE | 広告枠コードのタイプ不一致 |
| MainActivity | ERROR_SYSTEM | システムエラー |
| MainActivity | RESPONSE_IS_NULL | レスポンスが null |
| MainActivity | FAILURE_RTB | レスポンスの取得失敗 |
-
広告読み込み時にアプリケーションが落ちた場合
AndroidManifest.xml のメタデータに広告枠コードが設定されているか, 確認をしてください. -
広告を読み込んでも広告が表示されずエラーメッセージが出力しない場合
広告枠コードの値が正しくない可能性があります. 広告枠コードが正しいか確認してください. -
「Tag:MainActivity,Text:INVALID_AD_TYPE」が発生した場合
広告枠コードの種別と View の種別が一致していません, 広告枠コードが間違っていないか確認してください. -
「Tag:MainActivity,Text:ERROR_SYSTEM」や「Tag:MainActivity,Text:RESPONSE_IS_NULL」「Tag:MainActivity,Text:FAILURE_RTB」が発生した場合
API からのレスポンスに問題があります. 営業担当者に問い合わせをしてください.
事前
- COMPASS SDK と COMPASS SDK が利用しているライブラリを導入
- AndroidManifest.xml にユーザパーミッションを追加
- クリーンビルドを行う
- AdMob 管理画面でアプリを登録
- AdMob 導入と設定を行う (参考: Firebase-Admob 手順 )
- 必要であれば, ProGuard Settings を設定 (参考: Configure ProGuard Settings)

| 項目 | 値 |
|---|---|
| Class Name | インライン広告を表示したい場合 jp.microad.compass.smartphone.sdk.android.AdMob.CompassAdMobInlineAdapter インターステシャル広告を表示したい場合 jp.microad.compass.smartphone.sdk.android.AdMob.CompassAdMobInterstitialAdapter |
| Label | AdMob のリポートに使うラベル (変更不可能) |
| Parameter | COMPASS で発行された広告 ID |
-
バナー広告を表示させる場所の XML レイアウトに AdView を挿入する
<com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="@string/banner_ad_unit_id"> </com.google.android.gms.ads.AdView>
-
strings.xml に使用する広告枠コードを追加する
<string name="banner_ad_unit_id">AdMob で発行された広告 ID</string> -
バナー広告を表示させる場所の Java ファイルに以下のクラスをインポートする
import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView;
-
バナー広告の読み込みを行い広告を表示する
AdView mAdView = (AdView)findViewById(R.id.adView); AdRequest request = new AdRequest.Builder().build(); mAdView.loadAd(request);

AdView の詳しいことは Firebase AdView
-
インタースティシャル広告を表示させる場所の Java ファイルに以下のクラスをインポートする
import com.google.android.gms.ads.AdListener; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.InterstitialAd;
-
strings.xml に使用する広告枠コードを追加する
<string name="interstitial_ad_unit_id">AdMob で発行された広告 ID</string> -
メンバ変数に以下の宣言を追加する
private InterstitialAd interstitial;
-
インタースティシャル広告の読み込みを行う
@Override protected void onCreate(Bundle savedInstanceState) { . . . interstitial = new InterstitialAd(this); interstitial.setAdUnitId(getString(R.string.interstitial_ad_unit_id)); interstitial.setAdListener(new AdListener() { @Override public void onAdClosed() { requestNewInterstitial(); } }); requestNewInterstitial(); } private void requestNewInterstitial() { AdRequest adRequest = new AdRequest.Builder() .build(); interstitial.loadAd(adRequest); }
-
インタースティシャル広告を表示する
interstitial.show();

InterstitialAd の詳しいことは Firebase InterstitialAd