Unity
SDK職人の苦行お仕事
〜広告SDK導入のetc〜
広告SDKでレビューあれていないですか?
もくじ
・広告SDKとは、いままでやってきたSDK職人の歴史
・SDK導入あるある
・SDK導入後あるある
・まとめ
松田 芳郎(まつだ よしろう)    
元々は、ネット広告向けweb開発。
今は主にUnity使ってスマホ向けのゲームアプリを作っています。
(ツール&カジュアルゲーム系から、今はソシャゲ)
プロフィール紹介
@matsudapress
まず、そもそも広告SDK とは
バナー広告
(横長や、画面の一部で出てく
る広告等)
動画リワード広告
(動画広告を視聴することで、
ゲーム内通貨などゲームを有
利にできる)
インタースティシャル広告
(全画面で表示される広告)
SDK色々いれてきました。
いろんなSDKを...
広告用SDK以外にも
出向用SDKや、
分析用SDK等
たくさん。。
いろんな環境に
ネイティブ
上記メディエーションのリジェクト等の
理由で使えなくなった場合の代替手段として、
別で自社SSPで配信。または直でその他SDK呼び出し。
こういう配信コントールしたり、、、
自社で簡易SSPを作ったり、、
自社開発の簡易SSP(各SDKの配信コントール)
admobメディエーションで、複数束ねて配信
広告
広告
動画リワード
メディエーション
インタースティシャル
メディエーション
バナー
メディエーション
自社配信コントロールSDK
(簡易SSP?みたないもの)
その他分析用&クラッシュ検知用
SDK 直呼び出しSDK色々
admob
applovin
adcolony
unityads
自社広告
admob
nend
FacebookAudienceNetwork
admob
nend
webview対応の広告ネットワーク等
...etc
自社配信コントロールSDK
(簡易SSP)
admobメディエーションSDK
が使えなくなった時のため
に、、
applovin
nend
その他分析用&クラッシュ検知用
SDKその他分析用&クラッシュ検知用
SDKその他分析用&クラッシュ検知用
SDK
Facebook Audience Network
FacebookAudienceNetwork
SDK色々
SDK色々
SDK色々
SDK色々
SDK色々
admob
アプリ数十個作ってきましたが。。
1アプリに普通に、10個ぐらいは入れていました。
なんでそんなに入れるの
純粋にアプリを
良くしたい
マネタイズしないと
アプリ作っていけない
バランスが大事
SDK導入の苦労を分かち合いたいw
SDK導入あるある
SDK導入
あるある①
Android64K問題
64K問題とは、Androidアプリが参照しているメソッドが
64K(65536)を超えてしまうと、
ビルドエラーになってしまう問題。
google-play-servicesで65536超える
その場合は、MultiDexビルドが必要に。
→ PlayServicesResolver (unity-jar-resolver)を使う。
  admobや、google play gamesを普通にいれれば
  このresolverが付いて来ます。
Proguardを使うと一部SDKで広告が表示され
なかったり。
→ 妥協してproguardをオフにしたり
SDK導入
あるある②
SDK導入
あるある③
Androidのサポートライブラリ、
バージョンあわせてよ問題
SDK導入時にサポートライブラリが付属されており、
そのバージョンが他の SDKとバージョンが異なる。
→ 一個一個検索して削除。
SDK導入
あるある④
Androidライブラリ、衝突しまくり問題
SDK導入時にサポートライブラリが
どんどん追加されて、衝突してしまう。
java.util.zip.ZipException: duplicate entry
〜等
→ 一個一個検索して削除。
SDK導入
あるある⑤
AndroidManifest多すぎ問題
SDK毎にAndroidManifestが作られて
もうどれがどれだかw
→ 1つ1つ読む
導入が済んだら次は。。
・なんかアプリが重くなった気がする。
・端末が熱くなった気がする。
・通信量が増えた気がする。
やっぱり動画等は考慮が必要。
こういうレビュー、経験ないですか?
起動が遅い。。
処理がカクつく
5分ぐらいで端末が
ホッカイロ代わり
通信量 処理負荷/発熱
さすがに、端末にもアプリにも
負荷かかるので、なんとかしたい。
何度も動画をロードして申し訳ない問題
シーン読み込みの度に、新しい動画広告の
読み込みの処理を走らせてしまい、通信量&
メモリを使ってしまって大変申し訳ない状態。
SDK
導入後
あるある①
→ Singleton等、シーンをまたいでも読み込み情報が
  保持されるように。あと読み込みのタイミングや、
  頻度も考慮。
→ キャリア回線なら、抑えめに動画をロード。
  WIFI回線なら、もう少し露出を増やして動画ロード等。
→ 複数の動画SDKを同時にロードしすぎると
  メモリを圧迫して落ちる可能性も
動画リワードの視聴完了コールバックの
タイミングがSDKで違う問題。
動画リワードのSDKによっては、視聴完了のコールバックイベント
のタイミングが異なるものがある。
「視聴完了時」と、「視聴完了画面のページを閉じるボタン」
を押したタイミング。
SDK
導入後
あるある②
→ 閉じるボタンを押したタイミングに統一する等。
・SDK導入は、モチベーションがあがりづらい。($を頭に浮かべながら頑張る)
・入れづらいSDKがあった場合は無理していれない。(個人的見解)
・$が期待できるSDKに絞る(なんでもかんでも入れない)
・Unityやプラットフォームのバージョンを固定すると、
 割とトラブルを回避できるかも。。(妥協策)
 ※最近だとUnityのLTS版を使うと幸せになれるかも
・理想は、すべて、jenkins等CIに任せたい。。
(毎回xcodeや、Android Studio等で、ビルドして検証する必要があるは、
 結構たいへん)
まとめ
・デバッグする時は、テストモードに!(テスト端末除外設定等)
(まちがってクリックしてしまうと、、、リジェクトやペナルティの可能性。。
・各ネットワークSDKのガイドラインを読んで下さい。
・EUのGDPRにも注意!
注意点
・後ほどスライドをtwitterで流しますので、
 よかったらRTやいいねよろしくおねがいします。
・SDKの導入の王道パターン等あれば、こっそり教えてください。
ご清聴ありがとうございました!

Unity sdk職人のお仕事〜広告sdk導入のetc〜