× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
なぜか広告がいつまでも取得されない(AdsFetchCompletedがいつまでも呼び出されない)という現象。
どうやらライブラリの追加もれがあったようだ。 コンパイルエラーとかリンクエラーとか起きないこともあるのか。 沈黙の臓器。 全部直したらちゃんと取得された。 次の問題。 maioが再生できない。 エラーとして以下のようなものが出た UIAlertControllerに動画ビューを載せようとしているようだ。 なぜそんなことをするのか。 確かに、再生命令の直前までアラートを出している(アラートで「はい」を選択したら動画を再生している) それのせいなのか。 その時点で最前面にあるコントローラに載せて再生しようとしているのか。 アラートから直接でなく、アラートの直後(0コンマ数秒後)に再生するように変えてみた。 まだダメだ。同じワーニングが出る。 まだUIAlertControllerのインスタンスが残っているからか。 アラートを出さずに再生してみた。 問題なく再生された。 うーむ。再生するビューコントローラを指定できないのか? adfurikun自体のメソッド(ADFMovieReward.framework)には、再生するときにビューコントローラを指定する方法がない。 しかしmaioにはあったはずだ。以下の2種類の指定ができる。 [Maio show]; [Maio showWithViewController:viewController]; そこで、adfurikunからmaioを呼び出す部分を見てみる。 MovieReward6004.h/m だ。 見てみると、確かに
とだけ書いて有る。 そんなら、こっちから指定できるようにしちゃおう、ということで MovieReward6004.h
MovieReward6004.m
という感じで追記してみた。 で、adfurikunの初期化のときに
を追加。 ビルドして実行してみると…いい感じ! アラートがあってもちゃんと再生された! というわけで、maioは解決。 だが…ほかの広告も対応が必要になってくると面倒。 vungleで試したが、こちらは指定がviewやviewControllerでなく、windowになっている。 同じ要領で [UIApplication shareApplication].keyWindow を渡そうとしたが、なぜか実行時に盛大に落ちる。 面倒になってきたので、 「アラートと一緒にadfurikunは再生しない」 というのが現状の結論。 ####################### 別件。 アドフリ君には、以下の2つのdelegateが用意されている(他にもあるが) AdsDidCompleteShow AdsDidHide 動画の再生が終了した時と、動画を閉じた時だ。 動画広告は通常、動画が流れ終わると静止画になって、ダウンロードページに行くか、広告を閉じるボタンかを選ぶ。 静止画になった時に呼ばれるのがAdsDidCompleteShow、広告を閉じたらAdsDidHideが呼ばれるべきだ。 だが、必ずしもそうなってない。 検証した。
ということだ。 appLovinとmaio優秀。 adColonyとvungleトラップ。 元のSDKに対応するコールバックがないのかもしれないが、通知タイミングが名前と違うのは罠だ。 本来、インセンティブを付与するのはAdsDidCompleteShow ゲームを再開する処理はAdsDidHide と別々になっているべきだ。 adColonyとvungleなんかは、コールバックの名前を信じて実装してると、 広告を閉じないとインセンティブがもらえなくなる。 これがどういう問題かというと、 広告を見て、ユーザがその広告先に遷移し、そのままゲームアプリがメモリから消えてしまうと、広告を見たのにインセンティブがもらえない、ということが起きてしまう。 これはクレームがついても仕方がない。 対応したほうが良いだろう。 方法として考えられるのは ・その広告を使わない ・広告再生中にアプリがバックグラウンドに行ったら、付与する ・再生開始時にもうインセンティブ付与しちゃう ・ストック型のインセンティブにしない(本末転倒) などなど… PR |
||||||||||||||||||
|