Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://garlicg.blog92.fc2.com/tb.php/31-0b10cd9a

トラックバック

コメント

[C161] まったく思いつかなかった...

複数のSDKを実装するなんてまったく思いつきませんでした。ありがとうございます!
  • 2016-01-09 21:39
  • 名無し
  • URL
  • 編集

[C46]

素晴らしいまとめっぷり!海外用にMillennial Mediaもあるといいなぁ
  • 2011-10-12 23:25
  • 名無し
  • URL
  • 編集

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

複数の広告SDKを実装してみた

Androidアプリに広告を実装する時ってどのアドサーバーを利用するか迷います。海外向けか国内向けか、広告の単価、広告SDKの仕様等含め、さらにはAdsense-Admob、mediba-Admakerなどアドネットワーク事業者の提携や買収やらの話も多いので、悩んだ挙句途中から切り替えたり、複数のアドーサーバーを利用する場合も出てくると思います。
その都度各種広告SDKの仕様を見て実装するのは毎回手間なので、複数の広告SDK実装を紹介します。というかメモですけど。コンセプトは、メンテナンスしやすくシンプルに!です。



 やること
ひとつのアプリにAdmob、Adlantis、Admaker、medibaの4つの広告SDK、+ローカル広告を実装します。
そして4つの中からランダムで1つの広告を表示させます。

 シンプルに
表示するActivityに書くのはこれくらいにします。

 ローカル広告
広告表示に失敗した場合に表示する自社広告です。失敗した場合は他の広告を表示するも良いですが、最近root取ってアプリ広告を非表示にするぜアプリを見つけたので、今回はそれ対策も兼ねてのローカル広告です。

 備考
基本は各アドネットワーク事業者が公開している実装方法を一読して下さい。国産のアドサーバーはSDKの更新が大雑把に2ヶ月に1回くらいあるイメージです。実装方法が変わる場合もありました。

 準備
各種アドサーバーの登録申請、そしてSDK(.jarファイル)と必要なID情報などを全部揃えます。

libsフォルダを作ってjarを突っ込む。そしてビルドパスを通す。こんな感じになればおkです。
広告SDKビルドパス

ローカル広告用の320*50の画像を用意します。
Ad_GarlicContacts2.png
(自分で定番とか言うと定番な気がしてくるものです。)


 XMLの実装
AndroidManifest.xmlの編集
広告SDKによりますが不必要になるパーミッションもあります。ですがアプリバージョンアップ時にパーミッションが増えていると自動更新できずユーザーの不信感を買ってしまう可能性があるので、個人的には広告を表示すると決めた場合は最初からこの3つのパーミッションを設定した方が良いと思います。 追記2011/10/10 READ_PHONE_STATEのパーミッションですが検証した結果許可しなくても広告は表示されるっぽいです。許可しない&今後必須になればそのアドサーバーを利用しない心構えの方が良いかもしれません。

広告用XMLを作成
AdViewとしてinflateするための広告用XMLをlayout配下に作成します。他のxmlリソースと区別できるよう、ファイル名はads_○○.xmlにします。不必要になってしまった広告はxmlファイルを削除してしまえばOKです。

ads_admob.xml
ads_adlantis.xml
ads_admaker.xml
ads_myAd.xml(ローカル広告用) 他のAdViewに合わせて、ローカル広告用のイメージビューも作成しておきます。
medibaはxmlでも色々とパラメータを設定できるのですが、なくても簡単実装できるので今回はxmlファイルを作成しません。

表示Activityのレイアウト編集
実際に表示させるActivityのレイアウトファイルに広告用LinearLayoutを定義します。このLinearLayoutはどの広告が入っても良い箱になります。複数の画面で広告を表示する場合でも、広告用レイアウトのidを統一することでどの画面でも広告を表示することができます。縦幅を50dipにしているのは、wrap_contentだとAdlanitsの広告がぼ、ぼーんとなるのでその対策です。
lay_adtest.xml

 java側の実装
Adsクラス作成
広告クラスを作成します。広告クラスでは先ほど作成した広告用レイアウトに各AdViewを追加します。
各広告設定メソッド、ランダム広告設定メソッド、自社広告表示メソッドを作成しました。また、広告の状態がコールバックされるリスナーが提供されている場合は実装し、広告表示に失敗した場合はローカル広告を表示するようにしました。
Ads.java
広告表示Activityの編集
最後の仕上げです。広告を表示したいActivityにsetAdsメソッドを追加します。
AdTestActivity.java
以上で実装は完了です。4つの広告の実装を並べて見ると、以外と統一された感じに実装できたので個人的にすっきりしました。Adsクラスをメンテナンスだけで、国内の場合はmedibaで国外の場合はAdmobとか、Admobが表示されなかった場合はAdlantisとか、色々改変できると思います。


 learn more
最近アップデートされたAdmakerのSDKを確認したところ、アクティビティのonPause、onRestart、onDestroyで必要な処理が増えていました。個人的に広告のコードをメインコードときっちり分けたいんですよ。A型ですから。他のSDKでも、アクティビティのライフサイクルで広告APIを呼び出したい場合とか出てくるので、なるべくAds.javaで対応する方法をメモります。

Adsクラス編集
Adsクラスに表示中の広告を保持するObjectメンバと、該当ライフサイクルで行いたい処理を追加します。今回はAdmakerのマニュアルにあった処理だけを実装しました。
Ads.java そしてすべての広告セッターの最終行に、AdViewをObjextメンバに保持する処理を追記します。

広告表示Activityの編集
Adsインスタンスをメンバに保持し、ライフサイクルに合わせて先程実装したメソッドを呼び出します。 いじょー
この記事にトラックバックする(FC2ブログユーザー)
http://garlicg.blog92.fc2.com/tb.php/31-0b10cd9a

トラックバック

コメント

[C161] まったく思いつかなかった...

複数のSDKを実装するなんてまったく思いつきませんでした。ありがとうございます!
  • 2016-01-09 21:39
  • 名無し
  • URL
  • 編集

[C46]

素晴らしいまとめっぷり!海外用にMillennial Mediaもあるといいなぁ
  • 2011-10-12 23:25
  • 名無し
  • URL
  • 編集

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。