Android アド(広告)

nendのインタースティシャル広告を実装してみた(Android編)

投稿日:2014年9月3日 更新日:


どうもお久しぶりです。

久しぶりにAndroidアプリをリリースいたしました。

ドロイド君探偵 〜The novel〜

drotan_icon

 

これに、nendのインタースティシャルを組み込もうとして

けっこうつまづいたので、備忘録です。

 

nendのアカウントは持っている前提で頼んだ。

nendのインタースティシャル広告の導入方法説明してくよ!

 

nendのマニュアルに沿って説明しよう

はじめに言うがnendのマニュアルは一部間違っている!!

(20149/2時点)

実装できなかったやつは自分よりもマニュアルを疑え!!

 

マニュアルはここにある。

http://nend.net/doc/nendSDK_Android_Guide.pdf

これの36ページを見てくれ。

 

するとそこに

※GooglePlayService、AndroidManifest.xml の設定を行ってください。 

って書いてあるからそこをクリックして飛んでくれ。

 

はじめに: Google Play services

手順1: Google Play services のインストール

これはマニュアルに書いてある通りだ。そのままインスコだ!

 

手順2: Google Play services プロジェクトをインポート

これもその通りだが、Android開発に微妙に慣れてしまっている人は少し注意だ。

マニュアルで指定したフォルダの下を見ると、nendSDK-2.5.0.jar が見つかる。

これをインポートすれば〜 ってのはダメだ。失敗するぞ。

 

[ファイル] → [インポート] → [Existing Android Code into Workspace]で以下フォルダ

AndroidSDK フォルダ/sdk/extras/google/google_play_services/libproject 

を追加だ。

 

手順3: Google Play services への参照を追加

これもそのままだ。

nendのインタースティシャル広告を導入したいプロジェクトを右(副)クリック→プロパティを開こう。

左の中から[Android] → 右下の[ライブラリ]の[追加] → google-play-services_lib を追加だ!

 

手順4: 注意事項を確認だ

※Google Play services には Google Mobile Ads SDK が含まれています。 そのため、メディエーションで Google Mobile Ads SDK をプロジェクトに 追加している場合は、クラスの多重定義でビルドエラーが発生してしまいます。 このエラーは、Google Mobile Ads SDK をプロジェクトから削除していただく ことで回避することができます。

 

次に: manifestの設定

これも書いてある通りだ!場所を間違えずに入れろ!

もし、ここで

android:value="@integer/google_play_services_version" /> 

あたりでエラーが出てしまった人は、Google Play Servicesが上手くインポートされていない。

最初からやり直しだ!

 

これで下準備は終わりだ!

 

最後に: インタースティシャルの実装

やっとintersticial の実装だ。

まずは、onCreateの部分でマニュアル通り

NendAdInterstitial.loadAd(getApplicationContext(), “[発行された apiKey]”, [発行された spotID]); 

(テストは公式のサンプルがあるから『NendAdInterstitial.loadAd(getApplicationContext(), "8c278673ac6f676dae60a1f56d16dad122e23516",213206); 』で可能)

を追加する。

 

ちなみに、広告を呼び出した時にロードが完了していなければ

広告がでない仕様なので、なるべく早めにロードするために

はじめにいれておかなければならない。これマメな。

 

あとはインタースティシャル広告をだしたい場所に

NendAdInterstitial.showAd(this); 

をいれるだけだ。

 

終了時広告の場合(アプリを閉じるボタン付き)は

NendAdInterstitial.showFinishAd(this); 

ね、かんたんでしょ?

 

ちなみにここからがマニュアルのミス

別に使わなくても良い機能なんだけど

エラー処理とか考えると使った方が良いと思われ。

 

1) ロードイベントリスナ

こっからマニュアル間違ってます!正しいコード貼っときます。


NendAdInterstitial.setListener(new OnCompleationListener(){

@Override
public void onCompleation(NendAdInterstitialStatusCode statusCode) {
// TODO 自動生成されたメソッド・スタブ
switch(statusCode){
case SUCCESS:
// 成功
break;
case INVALID_RESPONSE_TYPE:
// 不明な広告タイプ
break;
case FAILED_AD_REQUEST:
// 広告取得失敗
break;
case FAILED_AD_INCOMPLETE:
// 広告取得未完了
break;
case FAILED_AD_DOWNLOAD:
// 広告画像取得失敗
break;
}
}
});

 

マニュアルには1行目

NendAdInterstitial.setListener(new CompleationListener(){ 

ってあるけど正しくは

NendAdInterstitial.setListener(new OnCompleationListener(){

です。

 

2) クリックイベントリスナ

こっちはさらにひどいです。

※間違い

nend_manual_miss

同じく1行目

NendAdInterstitial.showAd(this, new NendInterstitial.OnClickListener(){ 

ってあるけど正しくは

NendAdInterstitial.showAd(this, new NendAdInterstitial.OnClickListener(){

です。

 

そしてなんと・・・

なんとswitchが閉じられていない!!!

 

もう一つのFinishアドも同じです。。。

 

正しくはこちら


NendAdInterstitial.showAd(this, new NendAdInterstitial.OnClickListener(){

@Override
public void onClick(NendAdInterstitialClickType clickType) {
switch(clickType){
case DOWNLOAD:
// ダウンロードボタン
break;
case CLOSE:
// ×ボタンまたは範囲外タップ
break;
}
}
});

 

マニュアルを信じるのも大事だし

どうしてもダメなら疑うのも大事だと

思いました。

 

つまり、nend様大好きです、ありがとう。


-Android, アド(広告)

Copyright© 世界一ブログ.com , 2017 AllRights Reserved.