読者です 読者をやめる 読者になる 読者になる

迎 昭宏のブログ

IT業界で働きながら、週末はボルダリング。たまにライブ・フェス観戦。

動画リワードの初期化メディエーション

正式名称:アプリ起動時 アドネットワークSDK 初期化メディエーション

という長い名前の機能が生まれたきっかけはこちらの記事を読んでください。

mukae.hatenablog.com

 

動画リワード広告はモバイルバナー広告とは違い、広告を表示する回数が極端に少なくなる。

広告を視聴するかわりにインセンティブ(アイテムやポイント)を得られることにユーザーが同意しなければ表示されないというのが1番大きな理由である。

 

表示される回数が限られていて少ない上に、せっかくユーザーの同意が得られたのに在庫が無い状況だとしたら、その機会損失は大きい。

メディアが広告収益を得られなかったという直接的な金銭的ロスだけではなく、ユーザーにインセンティブを与えることでアプリの起動回数・継続時間が伸びて、結果LTVが向上していくことに繋がるチャンスを失ったかもしれないということ。

 

例えば、アプリが1日に1回しか動画リワード広告を表示するチャンスがないケースも考えられる。

・1日1回ログインボーナス:動画視聴すれば更に2倍!

f:id:tonby:20170305185951p:plain

必要とされたときに、広告在庫が無かったでは困る。

 

広告在庫があるという状況を確かなものにするには、事前にアドネットワークのSDKを初期化しておくことが重要です。

 

アプリ起動時に、アドネットワークSDKを初期化する意味

マネタイズだけではなく、アドネットワークの管理画面から広告を出稿している場合、アドネットワークSDKサードパーティーの計測ツールを使わずに、コンバージョン計測可能。

f:id:tonby:20170305192325p:plain

コンバージョンを計測するには、アプリ起動時に初期化しなければいけない。

 

初期化メディエーション3種類のモード

何も考えずに 初期化してしまうと、ユーザーはパケ死してしまうので注意が必要。

この機能は実装が必須ではないので、使う場合はよく理解したうえで使ってもらいたい。

f:id:tonby:20170305193151p:plain

【ALL】全て初期化する

全てのアドネットワークSDKを指定された間隔(4秒〜60秒)で実行します。

f:id:tonby:20170305193836p:plain

Wi-Fiかキャリア回線かを考慮しないで、とにかく全てのアドネットワークを初期化することを優先するモード。

動画ファイルの読み込みに時間がかかった場合は、以下のように処理が被る。

f:id:tonby:20170305194201p:plain

【WEIGHT】配信比率の1番高いものを1つ選んで初期化する

サーバーでeCPMを元に決定されたアドネットワークの配信比率から、最も収益性の高いアドネットワークを1つ初期化する。

f:id:tonby:20170305194438p:plain

配信比率が全く同率だった場合はどうなるか?

広告リクエストする度にサーバーで表示する順番を決めてくれているので、1番上を優先して選択するようになっている。

f:id:tonby:20170305200024p:plain

特定のアドネットワークだけを初期化したい場合は、管理画面にて手動で配信割合を1番大きくしておけば、毎回必ず最上位で返却されるので、特定のアドネットワークを初期化できる。

【AUTO】接続環境によって、ALLかWEIGHTを自動的に切り替える 

f:id:tonby:20170305201335p:plain

 

以上で、3つのモードについての説明は終わり。

ここからは開発していく上での仕様上悩んだところや、今後の更なる最適化についての考えなど。

 

ALLについて、各アドネットワークを初期化するタイミングで回線チェックし、Wi-Fiでなければ初期化せずにスキップするよう実装したのだが、ALLというモード名から期待される動作(全てのSDKが初期化される)が違うのもどうかと言うのと、AUTOとの機能差があまり無くなってくることから回線チェックはしないように戻した。

この辺の細かい仕様に関しては、メディアさんからの要望によって変えていくかもしれない。

 

一定間隔での初期化実行

一定の間隔(4秒〜60秒)で初期化していくことに関してすぐに思いつくことが、初期化完了したかどうかをリスナーで受け取ってから、次のアドネットワークを初期化したほうが重複して処理が行われないので安全ではないか?というつっこみ。

ネットワーク回線状態が悪く、初期化に時間がかかりすぎていた場合、初期化メディエーションを作った理由の1つである、コンバージョンを計測する意味から遠くなる(アプリ起動時から時間が経ちすぎる)ので、ある程度の秒数以上は設定できないように最大60秒とした。最小値4秒は初期化が同時に動いてもクラッシュしないギリギリの数字。

 

AppLovinのコンバージョン計測に特化した機能を使う場合は、

・WEIGHTモード

・最小値0秒

・管理画面にて手動でAppLovinを配信比率1位に固定

にする必要がある。

 

さらに、マネタイズはせずAppLovinの広告出稿だけにしか使わないケース(計測ツールとしての機能。そんなケースがあるのかわからないが。。無いとも言い切れない)があれば、AppLovinが持っている機能で、初期化時に素材をダウンロードしないという(Android)setAutoPreloadTypes、(iOS)autoPreloadAdSizesにNONEを設定で可能となるが、これが必要になるケースがあまり想像できなかったので実装はしなかった。

 ※初期化時に素材をダウンロードさせなくできる機能はAppLovinだけに存在する機能。