アプリをGooglePlayで公開すると、社内の広告SDKがGoogleの要件を満たしていないという問題に直面しました。アプリがストアから削除された可能性があります。そのため、すべての広告をオフにして、若いユーザーを非常に満足させましたが、マーケティング部門は慢性的に業績に不満を持っていました。
この状況から抜け出す最も論理的な方法は、Google自体がGoogle AdManagerサービスを使用して配信する広告を再生することでした。また、Google製品でもあるIMASDKを使用して実行します。
この記事では、iviおよびiviキッズアプリケーションにIMA SDKを実装する方法と、発生した制限について説明します。

チップIMASDK
いずれにせよ、公式ドキュメントでそれらについてさらに詳しく説明できるため、IMASDKのすべての機能と構造については説明しません。
IMA SDKの主な機能は何ですか?そして、なぜそれは私たちに合ったのですか? IMA SDKは、VASTビデオ広告を再生できます。この形式の可能性の1つは、コマーシャル用のネストされたラッパーの作成であり、ラッパーの数は正式には無限になります。つまり、実際のビデオにアクセスするには、チェーン内のすべてのラッパーを実行する必要があります。setAdTagUrl(String url)
メソッドを使用して最初のVASTファイルへのリンクを挿入するだけで、IMASDKはこのチェーンを単独で実行できます。
val adsRequest = ImaSdkFactory.getInstance().createAdsRequest()
adsRequest.adTagUrl = advUrl
この方法を使用すると、開発者のタスクが大幅に簡素化されます。ただし、(この場合を含めて)アプリケーション開発者がVASTファイル自体に含まれている広告統計を収集したい場合があります。広告サーバーは同じリクエストに対して2つの異なる応答を送信できるため、これらのファイルを広告サーバーから複数回リクエストすることはできません(これは標準であり、広告は常に変更されている必要があります)。この場合、開発者はペンですべてのVASTを収集し、そこから統計を収集するために必要なデータを抽出し、それらに基づいて一般的なVASTを生成する必要があります。これは、setAdsResponce(文字列広大)メソッドを使用してIMASDKに供給することができます。
val adsResponce = “<VAST>..</VAST>” //xml, VAST
adsRequest.adsResponse = adsResponce
IMA SDKのもう1つの便利な機能は、アプリケーションの内部プレーヤーを使用して広告を再生する機能です。これを行うには、VideoAdPlayerインターフェイスを実装し、そのメソッドをプレーヤーに実装します。
public interface VideoAdPlayer extends AdProgressProvider, VolumeProvider {
void loadAd(AdMediaInfo var1, AdPodInfo var2);
void playAd(AdMediaInfo var1);
void pauseAd(AdMediaInfo var1);
void stopAd(AdMediaInfo var1);
void release();
void addCallback(VideoAdPlayer.VideoAdPlayerCallback var1);
void removeCallback(VideoAdPlayer.VideoAdPlayerCallback var1);
}
ただし、アプリケーションに独自のビデオプレーヤーがない場合、または何らかの理由で使用できない場合でも、IMASDKはExoPlayerに基づいて独自のプレーヤーを提供します。
val adUiContainer: ViewGroup = view
val videoAdPlayer = ImaSdkFactory.createSdkOwnedPlayer(context, adUiContainer)
IMASDKの制限
残念ながら、IMASDKのUIは悲しいです。広告プレーヤーが常に次のようになることを覚悟してください。IMASDK
から広告画面のコントロールを変更することはできません。あなたは彼らの言語だけを変えることができます:
val imaSdkSettings = ImaSdkFactory.getInstance().createImaSdkSettings()
imaSdkSettings.language = "ru"
私たちの状況は、iviとiviの子供たちが存在し、単一のコードベースでサポートされているという事実によって悪化しました。つまり、ビルドスクリプトを使用すると、適切なタイミングで1つのコードから、独自のベルとホイッスル(アイコン、行、コードの断片)を使用してさまざまなアプリケーションを組み立てることができます。広告を再生するためのこの統一されたコードベースは、会社のためにお金を稼ぐための実績のあるツールである独自のエンジンを使用しています。アプリケーションはVASTだけでなくさまざまな広告フォーマットを使用するため、IMA SDKの実装では、このコードを単純に破棄することはできませんでした。ivi
広告インターフェースはIMASDKインターフェースとは完全に異なっており、それに適合させることはできません。
したがって、最も明白な決定は、広告エンジン(NSD)を終了し、同時にIMA SDKを実装するという決定のように見えました。これにより、Googleサーバーへのリンクを含む広告が到着すると、IMAが使用され、他のすべての広告(NSD)は、この形式で広告を再生することもできます。 VASTを実行し、ラッパーのチェーン全体を実行しますが、Googleファミリーポリシーの基準を満たしていません。

現在、iviアプリケーションのGoogleからの広告と他のソースからの広告は、さまざまな方法で表示されます。子供向けのiviキッズアプリでは、Googleの広告のみがターゲットになっているため、そこにある動画はIMASDKを使用してのみ表示されます。
結果
IMA SDKは、ビデオ広告を表示するためのシンプルで便利なツールです。広告プレーヤーのUIがあなたに依存しないという事実の準備ができているなら、IMASDKはあなたにとって問題ありません。広告付きの子供向けのAndroidアプリを収益化する必要がある場合、最も簡単な方法は、GoogleのネイティブツールであるIMASDKを使用することです。