僕の使ってた iPhone用 AdMaker SDK のバージョンが3.1だった事が判明しました。
AdMaker にユーザー登録した直後に現れるダウンロードリンクからダウンロードしたのがバージョン3.1だったみたいです。なんというトラップ!
3.3をダウンロードし直したら、結構、実装が変わってるし(笑)
約1日かけて、組み込み直しました。
結構ハマったので、注意点を列記してみます。
- AdMaker SDK導入ガイドの内容は疑ってかかるべし。
- didLoadAdMakerViewは、広告の取得に成功した際に呼ばれると書いてあるけど、最初の1回だけしか呼ばれない。再度、広告を読みなおしても呼ばれない。
- willAppearAdMakerScreenは、広告のページが表示された際に呼ばれると書いてあるけど、一度も呼ばれたことがない。
- willDismissAdMakerScreenは、広告のページが非表示になった際に呼ばれると書いてあるけど、これも一度も呼ばれたことがない。
- サンプルでは viewDidLoadで、AdMakerViewをインスタンス化してるけど、viewDidUnload で Release してないのでメモリワーニングがでたらメモリリークする。
- AdMakerViewクラスは、UIViewのサブクラスじゃなくて、UIViewControllerのサブクラス。
- 広告によってはタップすると App Storeアプリを起動するものがある。しかし、iOSシミュレータには App Store アプリがないので、Safari アプリでエラーが出てしまう。
- 広告によっては外部アプリが起動するということは、自アプリがバックグラウンドに回されるということ。AppDelegate の applicationWillResignActive で AdMakerViewのインスタンスを解放しちゃいけないようだ。自アプリに復帰した時にとんでもない事になる可能性がある。(cocos2dの場合、EAGLViewの再構築が失敗する)
- App Store アプリを起動しない広告の場合は、AdMakerView(UIViewController)下のUIWebViewで広告が表示される。その際、アプリメインビューのUIViewControllerの viewWillDisappear が呼ばれるので、ゲームなどのアプリの場合、ここで Pause 処理を記述して、viewWillAppear で Resume 処理を記述しとかないと裏で動きっぱなしになる。アプリによっては、不都合が出やすい所に Pause 処理を入れなきゃならないので憂鬱かも。
- AdMakerView クラスの viewWillAppear メソッドを呼ぶと、広告のリロードができるけど、これってオフィシャル的にOK?
どなたかが、AdMaker SDK は複雑だと書いてました。その時は「ええ〜?」と思いましたが、今回組み込んでみて、その意味を味わいました。(笑)
勘違い等ありましたら、ご指摘して頂けると助かります。
AdMakerViewのInstanceをReleaseできないっていう糞仕様が問題。
返信削除AdMob、iAd、MobFox、InMobi、smaato、Greystripeをアプリに突っ込んでるけど、こんな糞仕様はAdMakerとGreystripeだけだ!
>匿名さん
返信削除情報ありがとうございます。
インスタンスをreleaseできないのはほんと辛いです。
SDKをオープンソースにして貰えれば助かるんですけどね。