どうもお久しぶりです。
久しぶりにAndroidアプリをリリースいたしました。
ドロイド君探偵 〜The novel〜
これに、nendのインタースティシャルを組み込もうとして
けっこうつまづいたので、備忘録です。
nendのアカウントは持っている前提で頼んだ。
nendのインタースティシャル広告の導入方法説明してくよ!
nendのマニュアルに沿って説明しよう
はじめに言うがnendのマニュアルは一部間違っている!!
(20149/2時点)
実装できなかったやつは自分よりもマニュアルを疑え!!
マニュアルはここにある。
//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) クリックイベントリスナ
こっちはさらにひどいです。
※間違い
同じく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様大好きです、ありがとう。