์ด ๋ฌธ์„œ๋Š” ๋ฌด์—‡์„ ์ •๋ฆฌํ•˜๋‚˜

Google IMA(Interactive Media Ads)๋ฅผ Android์—์„œ ๋ถ™์ผ ๋•Œ, ๋ฌธ์„œ/์ƒ˜ํ”Œ์—์„œ ์šฉ์–ด๊ฐ€ ์„ž์—ฌ ๋ณด์—ฌ์„œ(โ€œextensionโ€, โ€œlibraryโ€, โ€œMedia3โ€) ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฝ๋‹ค.
์ด ๋ฌธ์„œ๋Š” ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์‹ค์ œ๋กœ ์“ฐ๋Š” ์šฉ์–ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์Œ์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •๋ฆฌํ•œ๋‹ค.

  • IMA SDK๊ฐ€ โ€œ๋ฌด์—‡์„โ€ ํ•ด์ฃผ๋Š”์ง€
  • ExoPlayer(ExoPlayer2 vs Media3)์™€ IMA๊ฐ€ โ€œ์–ด๋–ป๊ฒŒโ€ ์—ฐ๊ฒฐ๋˜๋Š”์ง€
  • โ€œํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋ช‡ ๊ฐœ๋ƒ?โ€๋ฅผ ์ •ํ™•ํžˆ ์–ด๋–ค ์˜๋ฏธ๋กœ ๋ด์•ผ ํ•˜๋Š”์ง€
  • (๋น„๊ต) WebView + IMA HTML5๋กœ ๊ด‘๊ณ ๋งŒ ๋ถ„๋ฆฌํ–ˆ์„ ๋•Œ ๊ตฌ์กฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์ง€๋Š”์ง€

1) IMA SDK๋Š” ๋ฌด์—‡์ธ๊ฐ€

IMA SDK๋Š” ๋™์˜์ƒ ๊ด‘๊ณ ๋ฅผ ๋ถ™์ด๊ธฐ ์œ„ํ•œ SDK๋‹ค. (Client-side/Server-side(DAI) ๋ชจ๋‘ ์ง€์›)
Client-side ๊ด€์ ์—์„œ IMA๋Š” ๋ณดํ†ต ๋‹ค์Œ์„ ๋‹ด๋‹นํ•œ๋‹ค.

  • VAST/VMAP ๊ฐ™์€ ad tag ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด‘๊ณ  ์š”์ฒญ
  • ๊ด‘๊ณ  ์žฌ์ƒ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด(๋กœ๋“œ/์‹œ์ž‘/์Šคํ‚ต/ํด๋ฆญ/์™„๋ฃŒ/์—๋Ÿฌ) ์ด๋ฒคํŠธ ์ œ๊ณต
  • ๊ด‘๊ณ  UI(์Šคํ‚ต ๋ฒ„ํŠผ ๋“ฑ) ๋ฐ ์ธก์ •/ํŠธ๋ž˜ํ‚น ํ๋ฆ„

๊ณต์‹ ๋ฌธ์„œ(๊ฐ€์ด๋“œ ์‹œ์ž‘์ ): IMA SDKs ๊ฐœ์š”

๊ฐœ๋ฐœ์ž ๊ด€์  ์š”์•ฝ: โ€œ๊ด‘๊ณ  ์ž์ฒด(์š”์ฒญยท์žฌ์ƒยท์ธก์ •) ํŒŒ์ดํ”„๋ผ์ธ์„ ํ‘œ์ค€ํ™”ํ•ด์„œ SDK๋กœ ์ œ๊ณตํ•œ๋‹ค.โ€


2) โ€œExoPlayer + IMAโ€ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์งˆ๋ฌธ

Q. IMA๋Š” ExoPlayer๋ฅผ โ€œ๋Œ€์ฒดโ€ํ•˜๋Š” ํ”Œ๋ ˆ์ด์–ด์ธ๊ฐ€?

A. ์•„๋‹ˆ๋‹ค.

  • ExoPlayer๋Š” ์ฝ˜ํ…์ธ (๋ณธํŽธ) ์žฌ์ƒ ์—”์ง„(ABR/DRM/ํŠธ๋ž™ ์„ ํƒ/๋ฒ„ํผ๋ง/๋””์ฝ”๋”ฉ ์ถœ๋ ฅ ๋“ฑ)์ด๋‹ค.
  • IMA๋Š” ๊ด‘๊ณ  ์š”์ฒญ/๊ด‘๊ณ  ์žฌ์ƒ ํ”Œ๋กœ์šฐ/๊ด‘๊ณ  ์ด๋ฒคํŠธยท์ธก์ •์„ ์ œ๊ณตํ•œ๋‹ค.

์ฆ‰, โ€œIMA vs ExoPlayerโ€๊ฐ€ ์•„๋‹ˆ๋ผ โ€œExoPlayer(ํ”Œ๋ ˆ์ด์–ด)์— IMA(๊ด‘๊ณ  ๊ธฐ๋Šฅ)๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ™์ด๋ƒโ€์˜ ๋ฌธ์ œ๋‹ค. ์ถ”๊ฐ€๋กœ, IMA๋Š” ํŠน์ • ํ”Œ๋ ˆ์ด์–ด์— ์ข…์†๋œ ๊ฐœ๋…์ด ์•„๋‹ˆ์–ด์„œ ExoPlayer๊ฐ€ ์•„๋‹Œ ํ”Œ๋ ˆ์ด์–ด์—๋„ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ExoPlayer(ํŠนํžˆ Media3)๋Š” IMA๋ฅผ ์‰ฝ๊ฒŒ ๋ถ™์ด๊ธฐ ์œ„ํ•œ ํ†ตํ•ฉ ๋ชจ๋“ˆ์ด ์ž˜ ์ •๋ฆฌ๋ผ ์žˆ์–ด ์‹ค๋ฌด์—์„œ ๋งŽ์ด ์„ ํƒ๋œ๋‹ค.


3) ๊ณต์‹ ์šฉ์–ด ์ •๋ฆฌ: โ€œExoPlayer IMA extensionโ€ vs โ€œExoPlayer IMA libraryโ€

์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๊ฐ€ ๊ฐ€์žฅ ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ง€์ ์ธ๋ฐ, ์•„๋ž˜ ๋‘ ํ‘œํ˜„์€ ๊ณต์‹ ๋ฌธ์„œ์— ์‹ค์ œ๋กœ ๋“ฑ์žฅํ•˜๋Š” ๊ณต์‹ ์šฉ์–ด๋‹ค.

3.1 (Google IMA ๋ฌธ์„œ ์šฉ์–ด) ExoPlayer IMA extension

Google IMA(Android) ๋ฌธ์„œ์—๋Š” **โ€œGet started with the ExoPlayer IMA extensionโ€**๋ผ๋Š” ๊ฐ€์ด๋“œ๊ฐ€ ์žˆ๊ณ , ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” โ€œExoPlayer IMA extensionโ€์€ IMA SDK๋ฅผ ExoPlayer์— ์‰ฝ๊ฒŒ ๋ถ™์ด๋„๋ก ๋งŒ๋“  ํ†ตํ•ฉ ๋ ˆ์ด์–ด๋ฅผ ๋œปํ•œ๋‹ค.

๋˜ํ•œ DAI(์„œ๋ฒ„์‚ฌ์ด๋“œ) ์ชฝ ๋ฌธ์„œ์—์„œ๋„ โ€œExoPlayer IMA extensionโ€์ด๋ž€ ํ‘œํ˜„์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, โ€œextension์ด IMA DAI SDK๋ฅผ ๋ž˜ํ•‘(wrap)ํ•œ๋‹คโ€๊ณ  ์„ค๋ช…ํ•œ๋‹ค.

ํ•œ ์ค„: โ€œExoPlayer IMA extensionโ€์€ Google IMA ๋ฌธ์„œ์—์„œ ์“ฐ๋Š” ํ†ตํ•ฉ ๋ ˆ์ด์–ด ์ด๋ฆ„์ด๋‹ค.

3.2 (Android Developers / Media3 ๋ฌธ์„œ ์šฉ์–ด) ExoPlayer IMA library

Android Developers(= Media3 ๋ฌธ์„œ)์—์„œ๋Š” โ€œExoPlayer IMA library๋ผ๋Š” ํ‘œํ˜„์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฌธ์„œ์—๋Š” ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ImaAdsLoader๋ฅผ ์ œ๊ณตํ•˜๊ณ , client-side IMA SDK ๊ธฐ๋Šฅ์„ ๋ž˜ํ•‘ํ•ด์„œ VAST/VMAP ๊ด‘๊ณ  ์‚ฝ์ž…์„ ์‰ฝ๊ฒŒ ํ•œ๋‹ค๊ณ  ์„ค๋ช…๋˜์–ด ์žˆ๋‹ค.

ํ•œ ์ค„: โ€œExoPlayer IMA libraryโ€๋Š” Media3(AndroidX) ๋ฌธ์„œ์—์„œ ์“ฐ๋Š” ๊ณต์‹ ๋ช…์นญ์ด๋‹ค.

3.3 ๋‘˜์˜ ์ฐจ์ด๋ฅผ โ€œํ•œ ๋ฌธ์žฅโ€์œผ๋กœ

  • โ€œExoPlayer IMA extensionโ€์€ Google IMA ๋ฌธ์„œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ†ตํ•ฉ ๋ ˆ์ด์–ด ํ‘œํ˜„์ด๊ณ ,
  • โ€œExoPlayer IMA libraryโ€๋Š” Media3(AndroidX) ๋ฌธ์„œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ†ตํ•ฉ ๋ ˆ์ด์–ด ํ‘œํ˜„์ด๋‹ค.

์‹ค๋ฌด์ ์œผ๋กœ๋Š” โ€œExoPlayer2(๊ตฌ ํŒจํ‚ค์ง€) ์ƒํƒœ๊ณ„ vs Media3(AndroidX) ์ƒํƒœ๊ณ„โ€ ์ฐจ์ด๋กœ ํ•จ๊ป˜ ์ดํ•ดํ•˜๋ฉด ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค.


4) ExoPlayer2 vs Media3 ExoPlayer: ์™œ ๊ฐˆ๋ผ์กŒ๊ณ  ๋ฌด์—‡์ด ๋‹ค๋ฅธ๊ฐ€

Q. ExoPlayer2์™€ Media3 ExoPlayer๋Š” โ€œ๋‹ค๋ฅธ ํ”Œ๋ ˆ์ด์–ดโ€์•ผ?

A. ๊ธฐ๋Šฅ์ ์œผ๋กœ๋Š” ํ›„์†/์ด์ „ ๊ด€๊ณ„์— ๊ฐ€๊น๊ณ , ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” โ€˜๋ฐฐํฌ ์ฑ„๋„(=AndroidX๋กœ ์ด๋™)โ€™๊ณผ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋‹ค.

Android Developers์˜ migration guide๋Š” ExoPlayer์˜ ์ƒˆ ํ™ˆ์ด Jetpack Media3๋กœ ์ด๋™ํ–ˆ๊ณ , ExoPlayer2(com.google.android.exoplayer2)์—์„œ Media3(androidx.media3)๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์•ˆ๋‚ดํ•œ๋‹ค.

Media3๋Š” AndroidX ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ณ„์† ๋ฆด๋ฆฌ์ฆˆ๋œ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  ์š”์•ฝ: โ€œExoPlayer์˜ ํ˜„์žฌ/๋ฏธ๋ž˜๋Š” Media3(AndroidX) ์ชฝ์— ์žˆ๊ณ , IMA ํ†ตํ•ฉ๋„ ๊ทธ ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ„๋‹ค.โ€


5) ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜์˜ค๋Š” ์‹ค์ „ ์งˆ๋ฌธ: โ€œํ”Œ๋ ˆ์ด์–ด๋Š” ๋ช‡ ๊ฐœ์•ผ?โ€

์—ฌ๊ธฐ์„œ โ€œํ”Œ๋ ˆ์ด์–ดโ€๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋ฌด์—‡์„ ๋œปํ•˜๋Š”์ง€๋ถ€ํ„ฐ ์ •ํ•ด์•ผ ์˜คํ•ด๊ฐ€ ์—†๋‹ค.

  • (A) ์•ฑ ์ฝ”๋“œ ๊ด€์ ์˜ Player ์ธ์Šคํ„ด์Šค(ExoPlayer ๊ฐ์ฒด)
  • (B) ํ™”๋ฉด์— ๋ณด์ด๋Š” ๋ทฐ(๋ Œ๋”๋ง ๋ทฐ)
  • (C) ์žฌ์ƒ ์—”์ง„(๋„ค์ดํ‹ฐ๋ธŒ ExoPlayer vs ์›น ๋น„๋””์˜ค)

Q. ExoPlayer + IMA(ํ†ตํ•ฉ ๋ ˆ์ด์–ด)๋ฉด Player ์ธ์Šคํ„ด์Šค๋Š” 2๊ฐœ์ธ๊ฐ€?

A. ๋ณดํ†ต 1๊ฐœ๋‹ค.
์—ฌ๊ธฐ์„œ โ€œํ†ตํ•ฉ ๋ ˆ์ด์–ดโ€๋Š” ๊ณต์‹ ๋ฌธ์„œ์—์„œ ๋งํ•˜๋Š”

  • (ExoPlayer2 ๊ณ„์—ด) ExoPlayer IMA extension ๋˜๋Š”
  • (Media3 ๊ณ„์—ด) ExoPlayer IMA library ์ฒ˜๋Ÿผ, IMA SDK๋ฅผ ExoPlayer์— ๋ถ™์ด๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“  ํ†ตํ•ฉ ๋ชจ๋“ˆ์„ ์˜๋ฏธํ•œ๋‹ค.

Media3 ๋ฌธ์„œ์—์„œ ์„ค๋ช…ํ•˜๋Š” ad insertion ๊ตฌ์กฐ๋Š” โ€œ๊ด‘๊ณ  ๊ตฌ๊ฐ„์„ ํ”Œ๋ ˆ์ด์–ด ํƒ€์ž„๋ผ์ธ์— ํ†ตํ•ฉโ€ํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ , ExoPlayer IMA library๊ฐ€ IMA SDK๋ฅผ ๋ž˜ํ•‘ํ•˜์—ฌ ๊ด‘๊ณ  ์‚ฝ์ž…์„ ์‰ฝ๊ฒŒ ํ•œ๋‹ค๊ณ  ๋ช…์‹œํ•œ๋‹ค.

์ฆ‰ ๊ถŒ์žฅ ํ†ตํ•ฉ(ExoPlayer IMA extension / ExoPlayer IMA library)์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ:

  • ExoPlayer ์ธ์Šคํ„ด์Šค 1๊ฐœ
  • ๊ด‘๊ณ  ๊ตฌ๊ฐ„/์ฝ˜ํ…์ธ  ๊ตฌ๊ฐ„์„ ๊ฐ™์€ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์žฌ์ƒ
  • IMA๋Š” ๊ด‘๊ณ  ์š”์ฒญ/์ด๋ฒคํŠธ/์ธก์ •์„ ์ œ๊ณต(ํ†ตํ•ฉ ๋ ˆ์ด์–ด๊ฐ€ ์—ฐ๊ฒฐํ•ด์คŒ)

Q. โ€œIMA SDK๋ฅผ ์ง์ ‘ ๋ถ™์ด๋ฉดโ€ 2๊ฐœ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์–ด?

A. ๊ฐ€๋Šฅํ•˜๋‹ค(ํ•˜์ง€๋งŒ ํ•„์ˆ˜๋Š” ์•„๋‹˜). ๋˜ํ•œ โ€œ์ง์ ‘ ํ†ตํ•ฉโ€์€ ExoPlayer์— ํ•œ์ •๋˜์ง€ ์•Š๋Š”๋‹ค. IMA SDK๋Š” ๊ด‘๊ณ  ์š”์ฒญ/์ด๋ฒคํŠธ/์ธก์ •์„ ์ œ๊ณตํ•˜๋Š” SDK์ด๋ฏ€๋กœ, ExoPlayer๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ”Œ๋ ˆ์ด์–ด(์˜ˆ: ์ปค์Šคํ…€ ํ”Œ๋ ˆ์ด์–ด/๊ธฐ์กด ๋ ˆ๊ฑฐ์‹œ ํ”Œ๋ ˆ์ด์–ด) ์— ๋ถ™์ด๋Š” ํ˜•ํƒœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ, ์•„๋ž˜ ์˜ˆ์‹œ๋Š” Android ์•ฑ์—์„œ ๊ฐ€์žฅ ํ”ํ•œ โ€œExoPlayer ๊ธฐ๋ฐ˜โ€ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ์„ค๋ช…ํ•œ๋‹ค.

โ€œ์ง์ ‘ ํ†ตํ•ฉโ€์€ IMA ์ด๋ฒคํŠธ(๊ด‘๊ณ  ์‹œ์ž‘/์ข…๋ฃŒ ๋“ฑ)๋ฅผ ์•ฑ์ด ์ง์ ‘ ๋ฐ›์•„์„œ ์ „ํ™˜์„ ์ œ์–ดํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ตฌํ˜„ ์„ ํƒ์— ๋”ฐ๋ผ 1-player๋„ ๋˜๊ณ  2-player๋„ ๋  ์ˆ˜ ์žˆ๋‹ค.

  • (์˜ˆ์‹œ 1) ์ง์ ‘ ํ†ตํ•ฉ + 1 Player(๊ฐ€๋Šฅ)
    ๊ด‘๊ณ  ์‹œ์ž‘ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์œผ๋ฉด ๊ฐ™์€ ExoPlayer ์ธ์Šคํ„ด์Šค์— ๊ด‘๊ณ  ์†Œ์Šค๋ฅผ ๋ถ™์—ฌ ์žฌ์ƒํ•˜๊ณ , ๊ด‘๊ณ  ์™„๋ฃŒ ์ด๋ฒคํŠธ ํ›„ ๋‹ค์‹œ ์ฝ˜ํ…์ธ  ์†Œ์Šค๋กœ ๊ต์ฒดํ•ด ๋ณธํŽธ์„ ์žฌ์ƒํ•œ๋‹ค.
    โ†’ Player ์ธ์Šคํ„ด์Šค๋Š” 1๊ฐœ์ง€๋งŒ, ๊ด‘๊ณ /์ฝ˜ํ…์ธ  ์ „ํ™˜ ๋กœ์ง์„ ์•ฑ์ด ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

  • (์˜ˆ์‹œ 2) ์ง์ ‘ ํ†ตํ•ฉ + 2 Player(๊ฐ€๋” ์„ ํƒ)
    contentPlayer(๋ณธํŽธ)์™€ adPlayer(๊ด‘๊ณ )๋ฅผ ๋”ฐ๋กœ ๋‘๊ณ , ๊ด‘๊ณ  ์ค‘์—๋Š” adPlayer์˜ PlayerView๋ฅผ ์˜ค๋ฒ„๋ ˆ์ด๋กœ ๋ณด์—ฌ์ฃผ๊ณ  ๋๋‚˜๋ฉด ์ˆจ๊ธด ๋’ค contentPlayer๋ฅผ ์žฌ์ƒํ•œ๋‹ค.
    โ†’ Player ์ธ์Šคํ„ด์Šค๊ฐ€ 2๊ฐœ๊ฐ€ ๋˜๋ฉด์„œ ์˜ค๋””์˜ค ํฌ์ปค์Šค/ํ’€์Šคํฌ๋ฆฐ/ํšŒ์ „/๋ฐฑ๊ทธ๋ผ์šด๋“œ/์ „ํ™˜ ํƒ€์ด๋ฐ ๊ฐ™์€ ์ƒํƒœ ๋™๊ธฐํ™”๋ฅผ ์•ฑ์ด ์ฑ…์ž„์ ธ์•ผ ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ExoPlayer ๊ธฐ๋ฐ˜ ์•ฑ์—์„œ๋Š” ๋ณดํ†ต โ€œExoPlayer IMA extension / ExoPlayer IMA libraryโ€ ๊ฐ™์€ ํ†ตํ•ฉ ๋ ˆ์ด์–ด๋ฅผ ์จ์„œ 1-player ๋ชจ๋ธ๋กœ ์šด์˜ ๋ณต์žก๋„๋ฅผ ์ค„์ด๋Š” ์ชฝ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.


6) (CSAI) Pre-roll ํ๋ฆ„์„ โ€œ1 Player ๋ชจ๋ธโ€๋กœ ์ดํ•ดํ•˜๊ธฐ

sequenceDiagram
  autonumber
  participant App as App (Player ํ™”๋ฉด)
  participant Player as ExoPlayer/Media3 (1๊ฐœ)
  participant Ads as Ads ์‚ฝ์ž… ๋ ˆ์ด์–ด(IMA ํ†ตํ•ฉ)
  participant IMA as IMA SDK (Client-side)
  participant ADS as Ad Server (VAST/VMAP)

  App->>Player: ์ฝ˜ํ…์ธ  ์ค€๋น„ (MediaItem + AdsConfiguration(adTagUri))
  Player->>Ads: ๊ด‘๊ณ  ์‚ฝ์ž… ํ๋ฆ„ ์‹œ์ž‘
  Ads->>IMA: IMA๋กœ ๊ด‘๊ณ  ์š”์ฒญ/์ด๋ฒคํŠธ ์—ฐ๊ฒฐ
  IMA->>ADS: VAST/VMAP ์š”์ฒญ
  ADS-->>IMA: ๊ด‘๊ณ  ์‘๋‹ต
  IMA-->>Ads: ๊ด‘๊ณ  ์žฌ์ƒ ์ƒํƒœ/์ด๋ฒคํŠธ
  Ads-->>Player: ํƒ€์ž„๋ผ์ธ์— ๊ด‘๊ณ  ๊ตฌ๊ฐ„ ๋ฐ˜์˜
  Player-->>App: ๊ด‘๊ณ  ์žฌ์ƒ -> ๋ณธํŽธ ์žฌ์ƒ (๊ฐ™์€ Player ์ธ์Šคํ„ด์Šค)

7) WebView + IMA HTML5(๊ด‘๊ณ ) + ExoPlayer(๋ณธํŽธ)๋กœ ๋ฐ”๊พธ๋ฉด ๋ญ๊ฐ€ ๋‹ฌ๋ผ์ง€๋‚˜

WebView ๋ฐฉ์‹์€ โ€œํ”Œ๋ ˆ์ด์–ด ๊ฐœ์ˆ˜โ€๋ฅผ (C) ์žฌ์ƒ ์—”์ง„ ๊ด€์ ์—์„œ ๋ณด๋ฉด ๋‹ต์ด ๋ช…ํ™•ํ•ด์ง„๋‹ค.

Q. WebView๋กœ ๊ด‘๊ณ ๋งŒ ๋Œ๋ฆฌ๋ฉด โ€œ์žฌ์ƒ ์—”์ง„โ€์ด ๋ช‡ ๊ฐœ์•ผ?

A. ์‚ฌ์‹ค์ƒ 2๊ฐœ๋‹ค.

  • ๋ณธํŽธ: ๋„ค์ดํ‹ฐ๋ธŒ ExoPlayer ์—”์ง„
  • ๊ด‘๊ณ : WebView ๋‚ด๋ถ€ HTML5 <video> + IMA HTML5 SDK ์—”์ง„

IMA HTML5 ๊ฐ€์ด๋“œ๋Š” โ€œ๊ฐ„๋‹จํ•œ video player๋ฅผ ๋งŒ๋“ค๊ณ  IMA SDK๋ฅผ ๋ถ™์—ฌ๋ผโ€๋Š” ์ „์ œ๋‹ค.

Q. ๊ทธ๋Ÿผ ๊ด‘๊ณ  ๋ทฐ ํฌ๊ธฐ๊ฐ€ ExoPlayer PlayerView์— ์ž๋™์œผ๋กœ ๋งž์ถฐ์ง€๋‚˜?

A. ์ž๋™์œผ๋กœ โ€˜๋ถ™์–ด์„œโ€™ ๋งž์ถฐ์ง€๋Š” ๊ฐœ๋…์€ ์•„๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งž์ถฐ์•ผ ํ•œ๋‹ค.
์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ํ”ํ•œ ํŒจํ„ด์€:

  • ๋™์ผ ์ปจํ…Œ์ด๋„ˆ(FrameLayout ๋“ฑ)์— PlayerView์™€ WebView๋ฅผ ์˜ค๋ฒ„๋ ˆ์ด๋กœ ์˜ฌ๋ฆฌ๊ณ 
  • ๊ด‘๊ณ  ์ค‘์—” WebView๋ฅผ VISIBLE, ๊ด‘๊ณ  ๋๋‚˜๋ฉด GONE
  • ๋‘ ๋ทฐ ๋ชจ๋‘ match_parent๋กœ ๋™์ผ ๋ ˆ์ด์•„์›ƒ ๊ทœ์น™์„ ๊ณต์œ  โ†’ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด โ€œ๊ฐ™์ด ๋ฆฌ์‚ฌ์ด์ฆˆ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผโ€ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค(ํ•˜์ง€๋งŒ ์„ค๊ณ„๋Š” ๊ฐœ๋ฐœ์ž ์ฑ…์ž„).

8) ๊ฒฐ๋ก (์‹ค๋ฌด ์„ ํƒ ๊ธฐ์ค€)

  • ExoPlayer ๊ธฐ๋ฐ˜์œผ๋กœ ์•ฑ์„ ์šด์˜ํ•œ๋‹ค๋ฉด, ๊ด‘๊ณ  ์‚ฝ์ž…์€ ๋ณดํ†ต โ€œExoPlayer IMA extension / ExoPlayer IMA libraryโ€์ฒ˜๋Ÿผ IMA๋ฅผ ๋ž˜ํ•‘ํ•œ ํ†ตํ•ฉ ๋ ˆ์ด์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 1-player ๋ชจ๋ธ์ด ๊ฐ€์žฅ ์ž์—ฐ์Šค๋Ÿฝ๋‹ค.
  • WebView ๊ด‘๊ณ  ๋ถ„๋ฆฌ๋Š” ์žฌ์ƒ ์—”์ง„์ด 2๊ฐœ๊ฐ€ ๋˜์–ด ์ „ํ™˜/์ƒํƒœ ๋™๊ธฐํ™”/๋ ˆ์ด์•„์›ƒ/์ •์ฑ…(๋ชจ๋ฐ”์ผ ์›น ์ œ์•ฝ) ๋ถ€๋‹ด์ด ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ (๊ณต์‹ ๋ฌธ์„œ ๋งํฌ ๋ชจ์Œ)