Tutti Lab

元シリコンバレー在住のおっさん技術者、モバイルVRアプリ開発に挑戦中

VR広告SDK「Immersv」を組み込んでみました

モバイルVRアプリ開発において「マネタイズ」は大きな課題です。一般的にモバイル向けアプリ(特に個人開発者)のマネタイズ手段は広告であり、各種提供されている広告SDKをアプリに組み込むことで、アプリ内で広告を表示し、実績に応じて広告収入を得る、というものです。
しかし、これらモバイル向けアプリの広告SDKは、VR空間上に貼り付けて使用するような使用形態が想定されていないため、モバイルVRアプリにそのまま適用することはできません。
今回は、モバイルVRに特化された広告SDKである「Immersv」を、開発中のアプリに組み込み、動作確認をしてみました。
f:id:tuti107:20170307200728p:plain

SDKの請求

まずはこちら(注:2017年3月7日現在、本サイトに接続できなくなっております。一時的なものかと思いますが。。)にアクセスし、SDKを請求します。フォームに必要情報を入力・送信すると、数日で先方から応答のメールがあります。
その後、私のプロジェクト(今、Gear VR、Daydream向けにモバイルVRアプリを開発しています)の説明をし、何度かのインタラクションを経て、SDKを入手することができました。なお、Immersvは米国の会社であり、全編英語を覚悟したのですが、対応いただいた日本法人の担当の方は日本語が堪能で、問題なくコミュニケーションをとることができました。

SDKのダウンロード、組み込み

SDKは、Gear VR、Daydream/Cardbord用に、これらOculus SDK/Google VR SDKやUnityのバージョン毎に用意されており、自分の開発環境に合わせて取得・インポートします。
私は、Daydream向けビルドを考慮し、Unity Daydream Preview 5.4.2f2-GVR12で、かつ(まずは)Gear VR向けに開発をしているので、本条件に相当する「ImmersvSDK-1.31-GearVR-1.0.3.unitypackage」を使用しました。
f:id:tuti107:20170223073524p:plain

実装

Immersv SDKは非常にシンプルです。基本、SDKに同梱のPDFドキュメントに記載されているサンプルコードをそのまま使えば、ほぼ問題ありません。一応、処理の流れを記しておくと、

  • ImmersvSDK.Init(APPLICATION_ID)を呼び出す。APPLICATION_IDはSDK利用許可時に通知される。
  • ImmersvSDK.OnInitSucces()コールバック(初期化成功)にて、ImmersvSDK.Ads.LoadAd(PLACEMENT_ID)を呼び出し、広告を読み込む。なお、PLACEMENT_IDはSDK利用許可時に通知される。
  • ImmersvSDK.Ads.OnAdReady()コールバック(広告準備完了)を受け取った後、なんらかのユーザ操作(「広告を見る」ボタン押下など)を受け付けた後、ImmersvSDK.Ads.StartAd()を呼び出して、広告を再生する
  • ImmersvSDK.Ads.OnAdComplete(result)コールバック(広告再生完了)にて、ユーザが広告を最後まで見る等の条件を満たした場合(result.BillableCriteriaMetがtrue)、アプリ内仮想通貨を与える等の、ユーザに対する報酬処理を行う

という形になります。

なお、以下の公式ビデオ(英語)にて、SDK請求から実装までの詳細が公開されています。
www.youtube.com

ちなみに私の開発中アプリにSDKを組み込んだものは、このような感じです。ビデオ画質が悪いため細かな部分、特に広告閲覧後の報酬の様子がわかりづらいですが、一通り動作しています。
www.youtube.com
チケット券売機の右中央辺り(ビデオでは解像度が低くてよく見えませんが、いわゆる「広告を見てコインをゲット」を表示しています)をGAZEすることで、Immersvの広告が始まります。
広告は、2D広告を映画館風に再生するものや、360度動画等様々であり、充分楽しめる(?)内容です。
広告が終わると、コインが手に入ります(こちらも見えづらい・・)

GearVRでは、私がいつも利用しているキャプチャーアプリLollipop screen recorderが動作せず、MirrorOP for Galaxy+OBSを使用しました。ただこれだと録音ができず、解像度が低く、微妙な感じです。。