2014年2月4日火曜日

iPhoneアプリにiAdで広告をつける

iPhoneアプリに広告をつけたかったので、
一番簡単そうなiAdでトライ。

参考書通りにコードを書いてみるけど、下記のようなエラーがでて広告が出てこない・・・。

[AppDeveloper] ADBannerView: Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:): Error Domain=ADErrorDomain Code=4 "The operation couldn’t be completed. Application has iAd Network configuration error" UserInfo=0x10a999310 {ADInternalErrorCode=4, NSLocalizedFailureReason=Application has iAd Network configuration error, ADInternalErrorDomain=ADErrorDomain}

[AppDeveloper] ADBannerView: Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:): Error Domain=ADErrorDomain Code=5 "The operation couldn’t be completed. Banner view is visible but does not have content" UserInfo=0x10ad0bc40 {ADInternalErrorCode=5, NSLocalizedFailureReason=Banner view is visible but does not have content, ADInternalErrorDomain=ADErrorDomain}

あーだこーだ他のWEBサイトを見たり書き方をかえてみたりするが同じ結果。

もう1回、コードをまじまじと見ると、、、

bannerViewのところから、bannerviewになっているではありませんか!!
そして、
<ADBannerViewDelegate>を追加するところの前に、スペースがはいってないじゃありませんか!!

Xcodeでエラーにはなってくれないので気づかず。
まあしょうがない。なおってよかった!


でもここで新たな壁が・・・。

iOSシュミレーターを起動してXcodeのデバック画面を見ると、
広告があるときに呼ばれるメソッド「bannerViewDidLoad」がいっこうに呼ばれない。

ずーっと、「bannerView:didFailToReceiveAdWithError」のNSLogにしかけたメッセージがで続ける。。。

「広告なし」
「広告なし」
「広告なし」
 ・・・

「Appleさん、私には広告はいただけないのでしょうか。」

諦めかけたところで、試しに実機テストしてみると、、、

広告が表示されるじゃないですか!!
ちゃんとNSLogも、広告ありのメソッドの中のが呼ばれている!






いやー、えがったぁ。(東北弁?)

ちなみに、MacからiPhoneを抜いてからアプリを起動すると、また広告が出ませんでした・・・。

きっとまだ本公開前のテスト中だし、挿してないとAppleさん的に何か不都合があるんでしょう、と適当に自分をなっとくさせました。

今日はおしまい!