2013年12月10日火曜日

iPhone アプリで AdMob の表示ができない

iPhone アプリで、AdMob を利用したアプリを作ろうと思っているが、まずは AdMob の簡単な使い方を確かめてみようと思いサンプルプログラムを作成したが、全く表示されない。

最終的には、表示できたのでそこまでの手順を残す。

今回、参考にしたサイトは、こちら

Google AdMob Ads iOS(初級)
https://developers.google.com/mobile-ads-sdk/docs/ios/fundamentals?hl=ja

Google 本家のページ。
いきなり Google と出て戸惑ったかもしれないが、AdMob とは Google が提供するサービスだ。

AdMob
http://www.google.co.jp/ads/admob/

さて、参考のサイトではいきなりの実装を行っているが、実際には前準備が必要となる。
それは、AdMob 自体にアカウントを作成して、広告表示の準備を行わないといけないと言う事。
ここから、失敗した内容を紹介しつつ最低限の表示を行うまで説明する。

失敗1:アカウント登録に戸惑う

AdMob を使用するには、アカウントを取得する必要がある。
Google アカウントがあれば、AdMob とは簡単に連携ができるようだ。
すでに、Google のアカウントを持っていたため、そのまま Google アカウントでログインした。
すると、ログイン画面後に、以下の画面が表示され呆然としてしまった。


アカウントを作成しているのに、アカウント登録の画面が表示されるからだ。
まず、この事態を把握するのに結構時間がかかった。
この画面を下にスクロールすると、登録の項目が出るので再度登録が必要かと思い進めていると、国の指定で「日本」がない。
この部分をどうすれば良い物か相当悩んだのであった。


答えは、ここで登録する必要は無いと言う事。
つまり、最初の画像に書かれている英文によると、「下のリストにある国はサポート対象となっているから、リンクで設定画面へ遷移して」ということで、リストにない国で登録する場合には下の項目を入力して処理してね。と言う事だった。
単純ながら、英語アレルギーで無視していたのが良くなかったようだ。
書かれてあったメッセージ通り、リンクをクリックすると設定画面へ移動した。

失敗2: 設定を放棄

早速、リンクから設定画面に移動したが、またここで意味が分からない状態になった。
何を設定すればよいか全く分からないのである。
ここまで来ると、進めていけば分かるだろうと実装に入ったのであった。
この部分は、後に解決するので、次の失敗に。。。

失敗3:Google を甘く見ていた

AdMob の設定をあきらめ、実装に入った訳だが、参考サイトの通り書かれて有る内容で実装してもエラーが出て上手くビルドすら通らない。
サンプルコードも有る物の、ダウンロードしても Xcode のバージョンが違うためか同じくビルドエラーになる。
流石に、嫌になってくるが AdMob は、もはやメジャーな機能なので Google で調べると当然解決策が見つかった。よって手順を残す。

 3-1.SDKのダウンロード
参考リンクの説明では、SDK のダウンロードありきで話が進んでいる。
が、いきなり参考リンクを見た人は、SDK の入手なんかしていない。

以下のリンクから iOS 版の SDK をダウンロードする。

AdMob SDK Download
https://developers.google.com/mobile-ads-sdk/download?hl=ja#downloadios

ダウンロード後、展開する。

3-2.プロジェクトへのコピー
Xcode のプロジェクトに、任意のグループを作成して、そこに展開した内容(Add-ons フォルダとREADME.txt以外全て)をコピーする。

3-3.ライブラリの追加と、コンパイラの設定
プロジェクトの設定で、ライブラリを追加する。
追加するのは以下の物

AudioToolbox
MessageUI
SystemConfiguration
CoreGraphics

他に、以下の物も追加しないとエラーになる(どうなってんだ Google)
AdSupport
StoreKit
AVFoundation

次に、プロジェクトの設定で Build Setting の項目を選択し、Other Linker Flags に -ObjC を追加する。

結構面倒だ。じつは CocoaPods を使用すればここまでは、一瞬で終わってしまう。
手動管理が面倒と思われる方は CocoaPods を利用する事をお勧めする。
(Podfile に 「pod 'Google-Mobile-Ads-SDK'」を追加して pod install)

3-4.実装
実装に関しては、参考リンクの通りで問題はないが、ここで困るのが
// 広告の「ユニット ID」を指定する。これは AdMob パブリッシャー ID です。 
bannerView_.adUnitID = MY_BANNER_UNIT_ID;
の部分。
MY_BANNER_UNIT_ID」については、define で指定しても良いし、直接(@"")指定しても良いが、問題は内容。
書いてある通り、広告の「ユニット ID」を指定すれば良いのだが、これが何の事かさっぱり分からなかった。おまけに「これは AdMob パブリッシャー ID です。」と書かれてあるために、パニックになってしまった。
パブリッシャー ID と言う表示を元に、AdMob の設定画面を見ると、画面上部にパブリッシャーIDがあるので、これを入力してみたが動かなかった(広告が表示されない)。


ネタバレにはなっているが、結果的に広告の設定を行って、そこに表示される「広告ユニットID」をコロン以降全て指定してやる必要があった(画像で行くと「ca-app~20」まで)。

3-5.広告の設定
話が前後するが、広告の設定が必要となるので、その作業を行う。
まず、設定画面で、「収益化」をクリックして、次に「新しいアプリを収益化」のリンクを押す。
表示方法等の設定画面が出るので、任意に設定する。
すると、3-4 の画面に有るとおりに「広告ユニット ID」が表示される。
これをプログラムに記述する。

失敗4:「収益化」と「広告」の理解不足

最初は「収益化」と「宣伝」の意味が分かっていなかった。
ここら辺の理解が鈍いのが欠点だ。

収益化とは、「自分のアプリのスペースを提供して広告を表示して収益を得る事」
宣伝とは、「自分ないし誰かのアプリのスペースを拝借して宣伝して貰う事」

と言う意味だと思う。
なので、宣伝の方では、表示の回数やクリックに対する対価の設定などがある。

これの理解無しに、全てが収入に繋がる物と思い、
「広告を表示するから広告の設定をしないと」→「なんで支払いの設定なんだ?」→「いや、コレで有ってるはず」→「なんで支払いの設定なんだ?」。。。のループが作られ相当な時間を費やしたのは言うまでもない。

最後に

だいぶ端折るが、あとは参考リンクの通りに実装すれば、広告が表示されるようになる。
実際にはこのままでは、エラー処理が行われていないなどの事があり、AppStore の審査には通らないようだ。
参考リンクから、中級→上級と上がっていく必要がある。
今のところ、画面に出るまで苦労して一息ついたので、先には進んでいない。

文面がぐちゃぐちゃで読みにくいかも知れないが、ポイントは押さえたと思っている。
同じ過ちで時間を費やしている人に役立てればいいなと思う。

0 件のコメント:

コメントを投稿