Flutter: Flutter ์œ„์ ฏ ํŠธ๋ฆฌ์— ํ†ตํ•ฉ๋œ Google ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ 

์— ๋งŒ๋“  2017๋…„ 09์›” 15์ผ  ยท  133์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: flutter/flutter

์ด ์˜๊ฒฌ์€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋ ค ์ค‘์ธ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํŠน์ • ๋‹จ๊ณ„๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. https://github.com/flutter/flutter/issues/12114#issuecomment -505633342
์šฐ๋ฆฌ๋Š” ์˜ค๋Š˜ ์ด๋Ÿฌํ•œ ์ž‘์—… ์ค‘ ์ผ๋ถ€๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐœ๋ณ„ ๋ฒ„๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.


Firebase(AdMob)์™€ Facebook ๋ชจ๋‘ '๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ' ํ˜•์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋Š” ์•ฑ ์ž์ฒด์—์„œ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ Œ๋”๋ง ๋ฐ ํ˜•์‹(์ƒ‰์ƒ, ๊ธ€๊ผด)์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ ์ฝ˜ํ…์ธ ์™€ ํ•จ๊ป˜ ์ธ๋ผ์ธ์œผ๋กœ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.

P3 crowd firebase firebase_admob passed first triage plugin new feature transferred

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. #8098์€ ๋ฐฐ๋„ˆ ๋ฐ ์ „๋ฉด ๊ด‘๊ณ  ์ง€์›๋งŒ ์ถ”์ ํ•˜๋„๋ก ์ œํ•œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Admob ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ์ด ๋ฒ„๊ทธ์˜ ๋งจ ์œ„์— ์žˆ๋Š” ๋Œ“๊ธ€์—์„œ '์ข‹์•„์š”'๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ด์— ๋Œ€ํ•œ "ํˆฌํ‘œ"๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

๋ชจ๋“  133 ๋Œ“๊ธ€

DFP ์ง€์›์ด ์žˆ์œผ๋ฉด ๋” ์ข‹์ง€ ์•Š์„๊นŒ์š”? ๋„ค์ดํ‹ฐ๋ธŒ/์œ ๋™ ๊ด‘๊ณ ์™€ ํ•จ๊ป˜ ์ธํ•˜์šฐ์Šค ๋ฐฐ๋„ˆ, Ad Exchange/์• ๋“œ์„ผ์Šค๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ ์ œํ’ˆ์„ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ”ผ๋“œ๋ฐฑ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! DFP์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@gcshri ๋Š” DoubleClick for Publishers ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์™„์ „ํ•œ ์›!

2017๋…„ 10์›” 12์ผ ๋ชฉ์š”์ผ 11:34 Eugenio Marletti [email protected]
์ผ๋‹ค:

@gcshri https://github.com/gcshri ๋Š” DoubleClick for
๊ฒŒ์‹œ์ž https://en.wikipedia.org/wiki/DoubleClick_for_Publishers ,
์žฌ๋ฏธ์žˆ๊ฒŒ๋„ ์ด์ „์—๋Š” DART ๋ผ๊ณ  ๋ถˆ๋ €์Šต๋‹ˆ๋‹ค ๐Ÿ˜„

โ€”
์Šค๋ ˆ๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/flutter/flutter/issues/12114#issuecomment-336227022 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAVZzZFhnb80PxDhsBj6k_30sbrs7qXks5srlu6gaJpZM4PZQgi
.

๋„ค. Doubleclick ์ƒ์ ์—์„œ ๋‚˜์˜จ ์ผ๋ถ€ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋ผ๊ณ  ๊ณ„์† ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Dart๋ฅผ ํ”ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง„์ง€ํ•˜๊ฒŒ DFP์™€์˜ ํ†ตํ•ฉ์€ Google ๋ฐ ๊ธฐํƒ€ ์†Œ์Šค์˜ ๊ด‘๊ณ  ์ˆ˜์ต์— ์˜์กดํ•˜๋Š” ์šฐ๋ฆฌ ์ค‘ ์ผ๋ถ€์—๊ฒŒ Flutter๋ฅผ ๊ฐœ๋ฐฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”. DFP์™€ ๊ด€๋ จ๋œ API์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์šฐ๋ฆฌ(๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ)๊ฐ€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์•„๋งˆ๋„ ๊ด€๋ จ ๋งํฌ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://developers.google.com/doubleclick-publishers/docs/clients

๋Œ€๋ถ€๋ถ„์˜ ๊ฒŒ์‹œ์ž๋Š” ์›น์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜
HTML5/ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•ฑ์—์„œ.

Git ์ €์žฅ์†Œ:

https://github.com/googleads

์ด๊ฒƒ์€ ์†์ž„์ˆ˜ https://github.com/flutter/flutter/issues/8098

๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. #8098์€ ๋ฐฐ๋„ˆ ๋ฐ ์ „๋ฉด ๊ด‘๊ณ  ์ง€์›๋งŒ ์ถ”์ ํ•˜๋„๋ก ์ œํ•œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Admob ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ์ด ๋ฒ„๊ทธ์˜ ๋งจ ์œ„์— ์žˆ๋Š” ๋Œ“๊ธ€์—์„œ '์ข‹์•„์š”'๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ด์— ๋Œ€ํ•œ "ํˆฌํ‘œ"๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

Admob ์ธก์—์„œ ์•ฝ๊ฐ„์˜ ์ž‘์—… ์—†์ด๋„ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? Flutter๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๊ทธ๋ฆฐ ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•˜๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ด ๋ฌธ์ œ๋Š” ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ Flutter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ์Šคํ† ํผ์ž…๋‹ˆ๋‹ค. ์–ธ์ œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ์ „ํ˜€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ์•ฑ ์ฝ˜ํ…์ธ ์™€ ํ•จ๊ป˜ ์ธ๋ผ์ธ์œผ๋กœ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋Š” ํ›Œ๋ฅญํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ(์ปค๋ฎค๋‹ˆํ‹ฐ)๋Š” ์ด๊ฒƒ์ด ์ •๋ง๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Unity ๊ฒŒ์ž„(๋ฐ ์•ฑ)์—์„œ๋„ ๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://developers.google.com/admob/unity/custom-native

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์ •๋ง ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•ฝ๊ฐ„ ์•ผ์‹ฌ์ฐจ๊ธด ํ•˜์ง€๋งŒ, ์ด๊ฒƒ์„ 1.0 ์ด์ •ํ‘œ ๋˜๋Š” ๊ทธ ์ด์ „ ๋ฒ„์ „์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? cc @mit-mit

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ •์ด ์—†์Šต๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌํ„ฐ ์œ„์ ฏ์œผ๋กœ ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์šฐ๋ฆฌ(์ฆ‰, ๋‚˜)๊ฐ€ kotlin/swift ๋ฒ„์ „์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋ชจ๋ฐ”์ผ ๊ด‘๊ณ  SDK๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? Flutter๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด์ง€๋งŒ ๋„ค์ดํ‹ฐ๋ธŒ API์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ AdMob ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ๊ณผ ์ผ์ข…์˜ ์Šน์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‚ฌ์šฉ์ž์™€ ๊ฐœ๋ฐœ์ž ๋ชจ๋‘์—๊ฒŒ ๋†€๋ผ์šด ์ผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ์ง„์ „?

์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ง„์ „. ์ด๊ฒƒ์€ ์ƒ๋‹นํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ”Œ๋Ÿฌํ„ฐ ์—”์ง„์˜ ํ•ต์‹ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

PlatformView๊ฐ€ ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

https://medium.com/flutter-community/flutter-platformview-how-to-create-flutter-widgets-from-native-views-366e378115b6

์œ ๋งํ•ด๋ณด์ž„.. https://github.com/YoussefKababe/admob_flutter

์ด๊ฒƒ์— ๋Œ€ํ•œ ๊ณ„ํš๋œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ์ •๋œ ์ถœ์‹œ๋‚˜ ์†Œ์‹์ด ์žˆ๋Š”์ง€๋„ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๊ฐ€์˜ค๋Š” ํ”„๋กœ์ ํŠธ์— flutter๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๊ธฐ๋ณธ ๊ด‘๊ณ ๋Š” ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์•ฑ ํ•˜๋‹จ์— ๋ชป์ƒ๊ธด ๋ฐฐ๋„ˆ๋ฅผ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค...

๊ฐ™์€ ๊ฒƒ. ์•ฑ์„ ์ž˜ ๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค..

์ด ์ผ์„ ๋„ˆ๋ฌด ์˜ค๋žซ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :'(

์ด ๊ฐ€์žฅ ๋งŽ์ด ์š”์ฒญ๋œ ๊ธฐ๋Šฅ์ด ๋งˆ์Œ์— ๋“œ์‹œ๋‚˜์š”? ๊ธฐํƒ€ ๊ด€๋ จ ํƒ€์‚ฌ ํŒจํ‚ค์ง€๋Š” ์œ ์ง€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์ด ์œ ์ผํ•œ ํฌ๋ง์ž…๋‹ˆ๋‹ค.

์ €๋Š” ํ•™์ƒ์ด๊ณ  ์ง€์›์„œ๋กœ ์•ฝ๊ฐ„์˜ ๋ˆ์„ ๋ฒŒ๊ณ  ์‹ถ์ง€๋งŒ ๊ธฐ๋ณธ ๊ด‘๊ณ  ์œ ํ˜•์ด ๋„ˆ๋ฌด ๋ˆˆ์— ๋•๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ณง ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์œ ๋งํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. https://pub.dartlang.org/packages/flutter_google_ad_manager , ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ iOS์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด https://github.com/ko2ic/flutter_google_ad_manager/pull/4/commits/5ab12ad22927e1bab3615658e75636fac746fcf7์— ์–ธ๊ธ‰๋œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

https://developers.google.com/ad-manager/mobile-ads-sdk/ios/quick-start ๋˜๋Š” https://developers.google.com/ad-manager/mobile-ads-sdk/android/quick ํ™•์ธ

๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ rxDart ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์„œ๋ฒ„์—์„œ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  firebase_admob์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์•ฑ์— ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์ง€๋งŒ ๋ฐฐ๋„ˆ์˜ ๊ด‘๊ณ ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋‚ด ์ŠคํŠธ๋ฆผ์ด ์ž๋™์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์™œ ๊ทธ๋ž˜?

์œ ๋งํ•ด๋ณด์ž„.. https://github.com/YoussefKababe/admob_flutter

@Purus - iOS ๋ฐ AndroidX ์ง€์› ๋ถ€์กฑ ์™ธ์— ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๋‹ค๋ฅธ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ตœ๊ทผ์˜ ๋ฐœ์ „์„ ๊ณ ๋ คํ•  ๋•Œ ํ›„์ž๊ฐ€ ๊ณง ํ•ด๊ฒฐ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค...

@theneshofficial - https://pub.dartlang.org/packages/flutter_google_ad_manager ๊ฐ€ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ?

๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ (AdMob)๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์•ฑ์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. AndroidView ๋ฐ UIKitView๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ AdMob SDK๋Š” ๊ฐ•์ œ๋กœ UnifiedNativeAd ๋‚ด๋ถ€์— ๊ด‘๊ณ ๋ฅผ ์‚ฝ์ž…ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ด‘๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ Flutter๋กœ ๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Flutter ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ „ํ˜€ ์‰ฌ์šด ์ผ์ด ์•„๋‹Œ ์ด์œ ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ธฐ๋ณธ์ ์œผ๋กœ Dart์—์„œ ๋Œ€๋ถ€๋ถ„์˜ UI๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ Android/iOS์—์„œ ๋ชจ๋“  ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€ ๋“ฑ์„ ์ž์ฒด ์ƒ์„ฑํ•œ ๋‹ค์Œ Flutter UI์— ์˜ค๋ฒ„๋ ˆ์ดํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋‘ ํ”Œ๋žซํผ ๋ชจ๋‘์— ๋Œ€ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๋นŒ๋“œํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋žŒ์งํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ด‘๊ณ ๋Š” ์ž˜ ํ‘œ์‹œ๋˜๊ณ  ํด๋ฆญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ UIKitView์˜ ์ƒํƒœ์™€ ์ผ๋ฐ˜์ ์ธ ์„ฑ๋Šฅ์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ํฐ ๋ฐฉํ•ด ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ž์˜ ๊ฒฝ์šฐ #25965์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด UIKitView๋Š” ํ˜„์žฌ ์ž˜๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” TabBar ์™€ ๊ฐ™์€ ํŠน์ • UI ์š”์†Œ๋ฅผ ํ†ตํ•ด ๊ฒฐํ•จ์ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ›„์ž์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ๋Š” ํ”Œ๋žซํผ ๋ณด๊ธฐ๋ฅผ ํฌํ•จํ•˜๋ฉด UI ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๋ฉ”์†Œ๋“œ ์ฑ„๋„์ด ๋” ์ด์ƒ ์—†์„ ์ •๋„๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์˜€์Šต๋‹ˆ๋‹ค(์˜ˆ์ „์—๋Š” ๊ด‘๊ณ ๊ฐ€ ๋กœ๋“œ๋œ ์‹œ๊ฐ„์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ํ•ด๋‹น ํ˜ธ์ถœ์€ ์žฅ์•  UI ์„ฑ๋Šฅ์—์„œ). ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํŠนํžˆ ์‹œ์ž‘ ์‹œ ์ด๋Ÿฌํ•œ ํ”Œ๋žซํผ ๋ณด๊ธฐ ์ค‘ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ƒ๋‹นํ•œ ์–‘์˜ ๋ฒ„๋ฒ…๊ฑฐ๋ฆผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ๋“œ ํ‘œ์‹œ๊ธฐ ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์•ฝ 1์ดˆ ๋™์•ˆ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. ๊ทธ ํ›„์—๋Š” ์ด ์„ฑ๋Šฅ ์ ์ค‘์ด ์ค„์–ด๋“ค์ง€๋งŒ ์ด์ƒ์ ์œผ๋กœ๋Š” ๋ชฉ๋ก ๋‚ด๋ถ€์— ๊ด‘๊ณ ๋ฅผ ํฌํ•จํ•˜๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ์Šคํฌ๋กคํ•˜๋Š” ๋™์•ˆ 60FPS๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์„ฑ๋Šฅ ํ”„๋กœํŒŒ์ผ๋Ÿฌ๋Š” ํ”„๋ ˆ์ž„๋‹น ์ตœ๋Œ€ ์•ฝ 100ms๋ฅผ ํ‘œ์‹œํ•จ).

๋‹ค์Œ์€ Java ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ž‘์€ ์ƒ˜ํ”Œ์ž…๋‹ˆ๋‹ค. iOS ์ชฝ์€ ์ •๋ง ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค.

    private UnifiedNativeAd mAd;
    private FrameLayout mView;

    FlutterAdView(Context context, Registrar registrar, int id) {
        mView = ... // Create a placeholder view

        // request an ad
    }

    <strong i="9">@Override</strong>
    public View getView() {
        return mView;
    }

    <strong i="10">@Override</strong>
    public void onUnifiedNativeAdLoaded(final UnifiedNativeAd unifiedNativeAd) {
        mAd = unifiedNativeAd;

        /* Inflate your layout
        /* ...
        */

        /* Set your views
        /* ...
        */

        adView.setNativeAd(ad);

        mView.addView(adView);
    }

    // Don't forget about dispose, etc


@JaspervanRiet - ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์˜ ์ฃผ์š” Flutter ์ „๋ฌธ๊ฐ€๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ Flutter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. https://github.com/YoussefKababe/admob_flutter ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๊ทธ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ Flutter ์˜์—ญ์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†๋Š”์ง€ ํ™•์ธํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@angel1st ๊ฑฐ์˜ ๋˜‘๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋œ ๋ฐฐ๋„ˆ ๊ด‘๊ณ ์ž…๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์•ฑ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ถ€๋ถ„์— Flutter์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ท€ํ•˜์˜ ๋‹ต๋ณ€์€ ์ €์—๊ฒŒ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ด‘๊ณ  SDK์˜ ์ œํ•œ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. UnifiedNativeAd ์‚ฌ์šฉ ์ œํ•œ์œผ๋กœ ์ธํ•ด Flutter์šฉ ๊ณต์‹ ๊ด‘๊ณ  SDK๊ฐ€ ์ถœ์‹œ๋˜์ง€ ์•Š๋Š” ํ•œ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์กฐ๋งŒ๊ฐ„ ์ƒ์ƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@dreamsoftin ์€ Flutter์šฉ Facebook Audience Network (https://github.com/dreamsoftin/facebook_audience_network)๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Android ์ „์šฉ์ด๋ฉฐ ๋ฐฐ๋„ˆ, ์ „๋ฉด ๊ด‘๊ณ , ๋ณด์ƒํ˜• ๋น„๋””์˜ค, ์ธ์ŠคํŠธ๋ฆผ ๋น„๋””์˜ค ๋ฐ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. iOS ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ๋ฐ๋ชจ:

์–ด๋–ค ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์„ ํ”Œ๋Ÿฌํ„ฐ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š”(๐Ÿ‘) ๋ฌธ์ œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ๊ณ„์† ์ฐฌ์„ฑํ•˜์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌ ํ•ด์š”!

์ด(๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ) ๋•Œ๋ฌธ์— Flutter ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ธ์ œ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ธ์ง€ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ทธ์— ๋”ฐ๋ผ ๊ณ„ํš์„ ์„ธ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ๊ณต์‹ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์„ ๋•Œ๊นŒ์ง€ admob_flutter๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŒจํ‚ค์ง€ v 0.2.0.

๊ฐ์‚ฌ ํ•ด์š”,

ํ‘ธ๋ฃจ์†Œํƒ€๋งŒ ๋ผ๋งˆ๋ˆ„์ž 

2019๋…„ 5์›” 13์ผ ์›”์š”์ผ ์˜คํ›„ 10:03 Dark Chocolate, ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

์ด๊ฒƒ ๋•Œ๋ฌธ์— ๋‚ด ํ”Œ๋Ÿฌํ„ฐ ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์–ธ์ œ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ณ  ๊ณ„ํš์„ ์„ธ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/flutter/flutter/issues/12114?email_source=notifications&email_token=AAIHDZ245EMJ2W2HX6MIHDDPVGJ7JA5CNFSM4D3FBARKYY3WVWWK3TUL52HS4DFVREXG43VMVBW63
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAIHDZYX4MEYBTZTHKDQQFDPVGJ7JANCNFSM4D3FBARA
.

admob_flutter ์˜ ์œ ์ผํ•œ ๊นŒ๋‹ค๋กœ์šด ๋ถ€๋ถ„์€ iOS ์ง€์›์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋Š” ์ด๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค.

@angel1st ์ด ์Šค๋ ˆ๋“œ๋Š” ๊ธฐ๋ณธ ๊ด‘๊ณ ์šฉ์ด๋ฉฐ admob_flutter ์—์„œ๋„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

https://github.com/dreamsoftin/facebook_audience_network๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

@SachinGanesh - FAN์— ์‹ฌ๊ฐํ•œ CPM ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํ† ๋ก ์— ๊ธฐ์ˆ ์ ์ธ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ์‚ฌ์†Œํ•œ ๋งํˆฌ - Google์ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์—ฌ๊ฒจ์ง€๋Š” ์ œํ’ˆ(๊ด‘๊ณ )์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ์ €์—๊ฒŒ๋Š” ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ํž˜์— ๋‹จ์ ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. :)

https://github.com/dreamsoftin/facebook_audience_network๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

@SachinGanesh iOS์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ์ง€์›์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?

์ฒดํฌ์ธ ์ค‘์ž…๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ์„ ํ•ด ์ฃผ์„ธ์š”!

์šฐ๋ฆฌ ๋ชจ๋‘์—๊ฒŒ ์ด๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜๐Ÿ˜

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ iOS๋„ ์ง€์›ํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์–ด ์ธ๋ผ์ธ admob ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์ง€๋งŒ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋Š” ์•„์ง ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://pub.dev/packages/admob_flutter

๋‚˜๋Š” ๋งค์ผ ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ๋…์ž๊ฐ€ ๋„๋‹ฌํ•˜๋Š” ์ดˆ๋Œ€ํ˜• ์ถœํŒ์‚ฌ์—์„œ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(_Flutter ํŒ€์˜ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์›๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„์—ˆ๊ณ  ๊ทธ๋“ค์€ ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•˜๋Š” ์ถœํŒ์‚ฌ๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค_). ๊ธฐ๋ณธ firebase_admob๊ณผ ํ•จ๊ป˜ ์ถœ์‹œํ•ด๋„ ๊ดœ์ฐฎ์€ MVP Flutter ์•ฑ์ด ์žˆ์ง€๋งŒ DFP ๊ด‘๊ณ ๊ฐ€ ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์•ฑ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ ๊ด‘๊ณ ์— ๋Œ€ํ•œ ์ง€์› ๋ถ€์กฑ์ด ์ฐจ๋‹จ๊ธฐ์ž…๋‹ˆ๋‹ค. Flutter์— ๋ฆฌ์†Œ์Šค๋ฅผ ํˆฌ์žํ–ˆ๊ณ  ๋งŽ์€ ์•ฑ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ธก๋ฉด์— ์˜ํ•ด ๋ณด๋ฅ˜๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ์‹ค๋ง์Šค๋Ÿฌ์šด ์ผ์ž…๋‹ˆ๋‹ค. POI: ๋Œ€๋ถ€๋ถ„์˜ ๊ด‘๊ณ  ํŒŒํŠธ๋„ˆ๋Š” WebView ๋‚ด์—์„œ HTML ๋ณด๊ธฐ์™€ JavaScript๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์—์„œ ์œ„์— ์ž‘์„ฑ๋œ ์ผ๋ถ€ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์œผ๋ฉด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž์ฒด ๊ฐœ๋ฐœ ํŒ€๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ด‘๊ณ  ๋„คํŠธ์›Œํฌ ์š”๊ตฌ ์‚ฌํ•ญ, ์ž์ฒด ์‚ฌ๊ธฐ ๊ฐ์ง€ ๊ธฐ์ˆ  ๋ฐ ์ด๊ฒƒ์€ ๊ทผ๋ณธ์ ์œผ๋กœ Flutter ํŒ€์—์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ด‘๊ณ ๊ฐ€ ์ค‘์š”ํ•œ ์ˆ˜์ž… ์ฑ„๋„์ธ ๋น„์ฆˆ๋‹ˆ์Šค์—์„œ Flutter ์ฑ„ํƒ์— ๊ถ๊ทน์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ‘œ์‹œํ•ด์•ผ ํ•˜๋Š” ๊ด‘๊ณ ์˜ ์˜ˆ์—๋Š” ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ๊ด‘๊ณ ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
https://vimeo.com/186510665

์—…๋ฐ์ดํŠธ:

๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๋ฐฐ๊ฒฝ, Teads๋กœ ์˜ˆ์ œ๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ ๊ด‘๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ํฌํ•จ๋œ ๋น„๋””์˜ค๊ฐ€ ์žฌ์ƒ๋˜์ง€๋งŒ ๋กœ๊ทธ์—๋Š” ์˜ฌ๋ฐ”๋ฅธ ์กฐํšŒ๊ฐ€๋Šฅ์„ฑ ์ถ”์  ๋ฌธ์ œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
Teads: W/teads#Visibility(17978): The Teads AdView is visible at 0%, hidded by 1 View(s): W/teads#Visibility(17978): - View of class io.flutter.plugin.platform.SingleViewPresentation$FakeWindowViewGroup, with id: -1, with contentDescription: null, with a size of: [width: 1050, height: 875] is hidding 100% of the ad

https://github.com/dreamsoftin/facebook_audience_network๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

@SachinGanesh iOS์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ์ง€์›์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?

๋„ค. UiKitView ์œ„์ ฏ์œผ๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ iOS์šฉ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋Š” ์•„์ง facebook_audience_network ์—์„œ ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ €๋Š” @nodinosaur ์™€ ํ•จ๊ป˜ ์ผํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ์˜ ์š”์ ์— ๋ง๋ถ™์ด์ž๋ฉด, ์šฐ๋ฆฌ๋Š” Flutter์—์„œ ํ›Œ๋ฅญํ•  ์˜ˆ์ •์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์ง€๋งŒ DFP/๊ด‘๊ณ ์—์„œ ์›€์ง์ž„์ด ์—†๋‹ค๋Š” ๊ฒƒ์€ ํ”Œ๋Ÿฌํ„ฐ๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” 1,500๋งŒ ๋ช…์˜ ํ™œ์„ฑ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š” ์šฐ๋ฆฌ๋‚˜๋ผ์—์„œ ๊ฐ€์žฅ ํฐ ์†Œ์…œ ๋„คํŠธ์›Œํฌ์˜ ์„ค๋ฆฝ์ž์ž…๋‹ˆ๋‹ค. ์ €๋Š” Flutter๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๊ณ  ์ง€์›์„ ์™„๋ฃŒํ–ˆ์„ ๋•Œ ์ˆ˜์ต์„ ์ฐฝ์ถœํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐฐ๋„ˆ์™€ ์ „๋ฉด ๊ด‘๊ณ ๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋ง์น˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ADS๋Š” ๊ณต๊ฒฉ์ ์ด์ง€ ์•Š๊ณ  ์ˆ˜์ต์„ ์ฐฝ์ถœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋Š˜๋‚  ํ•„์ˆ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.
4๊ฐœ์›”์˜ ์ž‘์—… ์†์‹ค, ๋‚˜๋Š” Swift + Kotlin์œผ๋กœ ๋Œ์•„๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@jonataslaw ํ”ผ๋“œ๋ฐฑ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ DFP ๊ด‘๊ณ ๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Teads์™€ ๊ฐ™์€ ์ผ๋ถ€ ๊ฒŒ์‹œ์ž๋Š” ์ž์ฒด ๊ฐ€์‹œ์„ฑ ๊ฐ์ง€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ๋ฏฟ๋Š”๋‹ค.

๊ด€๋ จ ์ฝ”๋“œ๋Š” https://github.com/flutter/engine/blob/master/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java ์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ƒ๋‹จ์— ์„ค๋ช…๋œ ๋Œ€๋กœ:

/*
 * A presentation used for hosting a single Android view in a virtual display.
 *
 * This presentation overrides the WindowManager's addView/removeView/updateViewLayout methods, such that views added
 * directly to the WindowManager are added as part of the presentation's view hierarchy (to fakeWindowViewGroup).
 *
 * The view hierarchy for the presentation is as following:
 *
 *          rootView
 *         /         \
 *        /           \
 *       /             \
 *   container       state.fakeWindowViewGroup
 *      |
 *   EmbeddedView
 */

์ด fakeWindowViewGroup ๋Š” EmbeddedView ์˜ ๋งจ ์œ„์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. ํˆฌ๋ช…ํ•œ Teads๋Š” ์ตœ์†Œํ•œ ์ „์ฒด ๋ณด๊ธฐ๋ฅผ ๋ฎ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. fakeWindowViewGroup ๋Š” ํŒ์—… ๋ฉ”๋‰ด์™€ ํŒจ๋„์ด ์ถ”๊ฐ€๋  ๋•Œ ๊ธฐ๋ณธ ๋ณด๊ธฐ ์œ„์— ์œ„์น˜ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ์•ฝ๊ฐ„ ๋‹ค๋ฅด๊ฒŒ ๋‹ฌ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. fakeWindowViewGroup container ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด fakeWindowViewGroup ๋ถ€๋ชจ๊ฐ€ ํ˜•์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. addView / removeView /etc WindowManager ์ฝœ๋ฐฑ์€ ์ง€๊ธˆ์ฒ˜๋Ÿผ ๋ณด๊ธฐ๋ฅผ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ณด๊ธฐ๊ฐ€ EmbeddedView ์˜ "์œ„"์— ์œ„์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Android์˜ ํ‘œ์ค€ ๊ทธ๋ฆฌ๊ธฐ ์ˆœ์„œ. fakeWindowViewGroup ํ˜•์ œ๊ฐ€ EmbeddedView ์„ ๋ฎ๊ณ  ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ.

/cc @amirh

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋‚ด ๋กœ์ปฌ ์ž„๋ฒ ๋””๋“œ ๋ณด๊ธฐ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

private void findAndHideFakeWindowManagerViewGroup()
{
    final ViewGroup parent = (ViewGroup) ((ViewGroup) getParent()).getParent();
    parent.getChildAt(1).setVisibility(View.INVISIBLE);
}

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ SingleViewPresentation.java ํ”Œ๋žซํผ์ด ์ด์ „ ์˜๊ฒฌ์—์„œ ์ œ์•ˆํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ์กฐ์ •๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

__์ด๊ฒƒ์€ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋‚ด์žฅ ๋ณด๊ธฐ๊ฐ€ ๋Œ€ํ™” ์ƒ์ž๋‚˜ ํŒ์—… ๋ฉ”๋‰ด ๋˜๋Š” ์ „์ฒด ํ™”๋ฉด ๋ณด๊ธฐ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ. ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. __์—์„œ PR์ด ๋ณ‘ํ•ฉ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค ์ฃผ์‹ญ์‹œ์˜ค.

Android์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” PR์ด ์ฒจ๋ถ€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. iOS์—๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ…Œ์ŠคํŠธํ•  ์—”์ง„์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ˆ„๊ตฐ๊ฐ€ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒ€์—์„œ ์ง์ ‘ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋กœ์ปฌ ad-SDK์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ์ง€์ • ์—”์ง„ ๋นŒ๋“œ๋ฅผ ํ™•์ธํ•˜์—ฌ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์ด๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž„๋ผ์ธ์— ๋Œ€ํ•œ ์ง„ํ–‰ ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@RaresMihalcea ๋ฏธ๋ž˜ ์˜ ์ด์ •ํ‘œ(2033๋…„ 1์›” 1์ผ ๋งˆ๊ฐ)๋ฅผ ์œ„ํ•ด ์„ค์ •๋˜์—ˆ์œผ๋ฉฐ ์ด ๊ธฐ๋Šฅ์˜ ์ค‘์š”์„ฑ์„ ๊ณ ๋ คํ•  ๋•Œ ๋‹ค์†Œ ๋ถˆ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ admob ๊ด‘๊ณ ์— ๋Œ€ํ•œ ์ง€์›์ด ๋ˆ„๋ฝ๋œ ๊ฒƒ์€ ๋งŽ์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฒŒ์ž„ ์ฒด์ธ์ €๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ณ ๊ฐ์—๊ฒŒ "ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Flutter๋Š” ํ›Œ๋ฅญํ•˜์ง€๋งŒ iOS์—์„œ๋Š” ๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ•ด์•ผ ํ•˜๋Š” ์‹œ์ ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋ ˆ์ž„์›Œํฌ์— ์˜ค๋Š” ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ด๊ฒƒ์ด ๊ฑฐ๋ž˜ ์ฐจ๋‹จ๊ธฐ์ผ ๋•Œ ์ด๊ฒƒ์ด ํฐ ๋ฌธ์ œ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ๋ฏธ์นœ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ์ œ๋ฐœ!

์ฒดํฌ์ธ ์ค‘์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š” ๋‚ด ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ฒด ๊ธฐ์ˆ  ์Šคํƒ์„ ์ฐพ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
react-native ๋ฐ ionic ๋˜๋Š” ์ด๋“ค์— ๋Œ€ํ•œ ํ˜„์‹ค์ ์ธ ํƒ€์ž„ ๋ผ์ธ์— ๋Œ€ํ•œ ์ง€์›์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.
๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ์ˆ  ba dum tss ๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋ถˆํ–‰ํžˆ๋„ ๋ช‡ ๋‹ฌ ๋™์•ˆ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์— ์ง€์ณ์„œ ๋‚ด ์• ์™„ ๋™๋ฌผ ํ”„๋กœ์ ํŠธ์—์„œ ์‹ค์ œ๋กœ ์ž‘์—…ํ•˜๋ ค๋ฉด Kotlin์„ ๋ฐฐ์šฐ๊ณ  Mac OS VM์„ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ถ”์‹ : ์‹ค์ œ๋กœ ๊ธฐ๋ณธ ๊ด‘๊ณ  ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•˜๋Š” Ionic ๋˜๋Š” React-Native์šฉ ๋ชจ๋“ˆ์„ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๋„ค์ดํ‹ฐ๋ธŒ admob ๊ด‘๊ณ ๊ฐ€ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ ๊ฐœ๋ฐœ์—๋„ ์—ฌ์ „ํžˆ ๋ฒ ํƒ€ ๋ฒ„์ „์ด๋ผ๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ์ด์ƒ์ ์ด๊ฒ ์ง€๋งŒ, ๊ทธ ๋™์•ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํ•œ์ด ์žˆ๋Š” firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"๋ฐฐ๋„ˆ ๊ด‘๊ณ ๋Š” ์œ„์น˜ ์ง€์ • ๊ธฐ๋Šฅ์ด ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ๋„ˆ ๊ด‘๊ณ ๋Š” ํ™”๋ฉด ์ƒ๋‹จ ๋˜๋Š” ํ•˜๋‹จ์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ€์žฅ์ž๋ฆฌ์—์„œ ๋…ผ๋ฆฌ์  ํ”ฝ์…€ ์˜คํ”„์…‹์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

๊ทธ๋“ค์ด ์ ์–ด๋„ ๊ทธ๊ฒƒ์„ ๊ณ ์น  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กคํ•  ์ˆ˜ ์žˆ๋Š” "๋„ค์ดํ‹ฐ๋ธŒ" ๋ฐฉ์‹์œผ๋กœ ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ํŠนํžˆ iOS์˜ ๊ฒฝ์šฐ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. "firebase_admob"์ด๋ผ๋Š” ํ”Œ๋Ÿฌํ„ฐ ์ง€์› ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ผ๋ถ€๋ผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Flutter๋Š” ํ›Œ๋ฅญํ•˜์ง€๋งŒ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด 2033๋…„ 1์›” 1์ผ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์›ƒ๊ธฐ๋‹ค ์ง„์งœ ์›ƒ๊ธฐ๋‹ค 2019๋…„์ธ๋ฐ ๊ทธ๋Ÿฐ ์—ญํ• ์„ ํ•˜๋ ค๋ฉด ์šฐ๋ฆฌ๋Š” ์†์ž๊ฐ€ ํƒœ์–ด๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค. ) ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์—๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๊ณผ ์ž ์žฌ์  ์†”๋ฃจ์…˜์ด ๋…ผ์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ์š”๊ตฌ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ด€์‹ฌ ์žˆ๋Š” ๋ฌธ์ œ์— ์—„์ง€์†๊ฐ€๋ฝ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”.

์œ„์ ฏ ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋กœ ํ”Œ๋žซํผ๋ณ„ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  UI๋ฅผ ํฌํ•จํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ๊ณ ๊ธ‰ ์ง€์›

์ด๋ฒˆ ํ˜ธ์—์„œ ์‚ฌ์šฉ๋œ '๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ '๋ผ๋Š” ์šฉ์–ด๋Š” '๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  '๋ผ๋Š” ํŠน์ • AdMob ๊ด‘๊ณ  ํ˜•์‹์„ ์˜๋ฏธํ•˜๋ฉฐ ํ˜„์žฌ ์ œํ•œ๋œ ์•ฑ ๊ฐœ๋ฐœ์ž(ํผ๋ธ”๋ฆฌ์…”)๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ด‘๊ณ ๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š” ๋ฐฉ์‹์„ ๋งž์ถค์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ด‘๊ณ ์— ๋Œ€ํ•œ ์ž์ฒด Android/iOS ๋ณด๊ธฐ๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ).

์—ฌ๊ธฐ์—์„œ ์„ค๋ช…ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ Android/iOS UI ๊ตฌ์„ฑ์š”์†Œ(Flutter ์œ„์ ฏ ์•„๋‹˜)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด‘๊ณ ๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š” ๋ฐฉ์‹์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ๋‚˜์ค‘์— ํ”Œ๋žซํผ์—์„œ ๋ Œ๋”๋ง๋˜๋Š” ๋Œ€๋กœ Flutter ์œ„์ ฏ ํŠธ๋ฆฌ์— ํฌํ•จ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ํ˜„์žฌ ๋ฌธ์ œ์—์„œ ์ถ”์ ํ•˜๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

Flutter ์œ„์ ฏ ํŠธ๋ฆฌ์— AdMob ๋ฐฐ๋„ˆ ๊ด‘๊ณ  ํฌํ•จ

์ด๋ฒˆ ํ˜ธ์—์„œ ๋…ผ์˜๋˜๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์€ Flutter ์œ„์ ฏ ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋กœ AdMob ๋ฐฐ๋„ˆ ๊ด‘๊ณ  ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค(Firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‚ฌ์šฉํ•˜๋Š” ํ˜„์žฌ ์ ‘๊ทผ ๋ฐฉ์‹์€ Flutter UI ์ƒ๋‹จ์— ๋ฐฐ๋„ˆ ๊ด‘๊ณ ๋ฅผ ์˜ค๋ฒ„๋ ˆ์ดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค). ๋ฏธ๋ฆฌ ์„ค์ •๋œ ์œ„์น˜).

์ด๊ฒƒ์€ https://github.com/flutter/flutter/issues/35081 ์—์„œ ์ถ”์ ๋˜๋ฉฐ, ์ด์— ๋Œ€ํ•ด ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์—„์ง€์†๊ฐ€๋ฝ์„ ์œ„๋กœ ์˜ฌ๋ ค์ฃผ์„ธ์š”.

Flutter UI ์œ„์— ํ”Œ๋žซํผ๋ณ„ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  UI๋ฅผ ์˜ค๋ฒ„๋ ˆ์ดํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ๊ณ ๊ธ‰ ์ง€์›

์ด๊ฒƒ์€ firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํ˜„์žฌ ๋ฐฐ๋„ˆ ์ง€์›๊ณผ ๊ฑฐ์˜ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๊ธฐ๋ณธ ๊ด‘๊ณ ๋Š” ์ „์ฒด Flutter UI ์œ„์— ๋–  ์žˆ๋Š” ๊ณ ์ • ์œ„์น˜์— ํ‘œ์‹œ๋จ).

๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํžˆ ๋” ๋‚˜์€ ์˜ต์…˜์ด์ง€๋งŒ ํ˜„์žฌ ๋ฐฐ๋„ˆ ์ง€์›๊ณผ ์œ ์‚ฌํ•œ ์ด "ํ”Œ๋กœํŒ…" ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋” ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์˜ต์…˜์ด ๋„์›€์ด ๋œ๋‹ค๋ฉด https://github.com/flutter/flutter/issues/35082 ์— ์—„์ง€์†๊ฐ€๋ฝ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

Flutter ๋ Œ๋”๋ง์œผ๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ๊ณ ๊ธ‰ ์ง€์›

์ฆ‰, ๋„ค์ดํ‹ฐ๋ธŒ Android/iOS์šฉ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ์™€ ์œ ์‚ฌํ•˜๊ฒŒ Flutter ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ต์…˜์€ ์•„๋งˆ๋„ ๋‹ฌ์„ฑํ•˜๊ธฐ ๊ฐ€์žฅ ์–ด๋ ต๊ณ  ๋ฏธ๋ž˜์—๋Š” ์•„์ง ๋ฉ€์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ https://github.com/flutter/flutter/issues/35083 ์—์„œ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ admob ๊ด‘๊ณ ๊ฐ€ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ ๊ฐœ๋ฐœ์—๋„ ์—ฌ์ „ํžˆ ๋ฒ ํƒ€ ๋ฒ„์ „์ด๋ผ๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ์ด์ƒ์ ์ด๊ฒ ์ง€๋งŒ, ๊ทธ ๋™์•ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํ•œ์ด ์žˆ๋Š” firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"๋ฐฐ๋„ˆ ๊ด‘๊ณ ๋Š” ์œ„์น˜ ์ง€์ • ๊ธฐ๋Šฅ์ด ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ๋„ˆ ๊ด‘๊ณ ๋Š” ํ™”๋ฉด ์ƒ๋‹จ ๋˜๋Š” ํ•˜๋‹จ์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ€์žฅ์ž๋ฆฌ์—์„œ ๋…ผ๋ฆฌ์  ํ”ฝ์…€ ์˜คํ”„์…‹์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

๊ทธ๋“ค์ด ์ ์–ด๋„ ๊ทธ๊ฒƒ์„ ๊ณ ์น  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กคํ•  ์ˆ˜ ์žˆ๋Š” "๋„ค์ดํ‹ฐ๋ธŒ" ๋ฐฉ์‹์œผ๋กœ ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ํŠนํžˆ iOS์˜ ๊ฒฝ์šฐ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. "firebase_admob"์ด๋ผ๋Š” ํ”Œ๋Ÿฌํ„ฐ ์ง€์› ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ผ๋ถ€๋ผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@matte5031 Android ํ…Œ์ŠคํŠธ ๊ด‘๊ณ ๋กœ ' https://pub.dev/packages/admob_flutter '๋ฅผ ์‹œ๋„ํ–ˆ๊ณ  ์ง€๊ธˆ๊นŒ์ง€ ๊ด‘๊ณ ๋ฅผ Scaffold ์•„๋ž˜, ๋ชฉ๋ก ๋ณด๊ธฐ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์— ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค. react.js ๋ฐ Apace cordova์˜ ๊ธฐ์ˆ  ์Šคํƒ๊ณผ ํ•จ๊ป˜ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌํ„ฐ admob ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ €๋Š” AdMob ํ…Œ์ŠคํŠธ ๊ด‘๊ณ ๋กœ ํ…Œ์ŠคํŠธ ์ค‘์ผ ๋ฟ์ด๋ฉฐ ํ”„๋กœ๋•์…˜์—์„œ ์ด์— ๋Œ€ํ•ด ํ™•์ธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@ashishsukhija Ye Android ํ…Œ์ŠคํŠธ ๊ด‘๊ณ ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ iOS๋Š” ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฏธ ์กด์žฌํ•˜์ง€๋งŒ ์ด ATM์ด ์—†๋Š” Google ์œ ์ง€ ๊ด€๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ด๊ฒƒ์ด ํฌํ•จ๋˜๋Š” ๊ฒƒ์„ ํ›จ์”ฌ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์œ„์ ฏ ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋กœ ํ”Œ๋žซํผ๋ณ„ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  UI๋ฅผ ํฌํ•จํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ๊ณ ๊ธ‰ ์ง€์›

์ด๊ฒƒ์€ ํ”Œ๋žซํผ ๋ณด๊ธฐ( Android View / UIKitView )๊ฐ€ ์žˆ๋Š” Flutter์—์„œ ์ด๋ฏธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Facebook Audience Network ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋˜ํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  Ad SDK๋ฅผ flutter ์•ฑ์— ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ณ  ์œ„์ ฏ ํŠธ๋ฆฌ ๋‚ด์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ํ”„๋กœ๋•์…˜ ์•ฑ์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค.
Webp net-resizeimage

@SachinGanesh ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Android๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. UIKitView๋Š” ์ž˜๋ฆด ์ˆ˜ ์—†์Œ(#25965)๊ณผ ๊ฐ™์€ ์ฃผ์š” ์ œํ•œ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ๋จผ์ € ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ๋„ ์ƒ๋‹นํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@JaspervanRiet ๊ธฐ๋ณธ ๊ด‘๊ณ  UI๋ฅผ ์ž˜๋ผ๋‚ผ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด, ๊ทธ๊ฒƒ์€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ตœ๋Œ€ ๋„ˆ๋น„ ๊ธฐ์ค€์„ ์ฐจ์ง€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

@FarmaanElahi ํด๋ฆฌํ•‘์˜ ํ•„์š”์„ฑ์€ ์‹ค์ œ ์œ„์ ฏ์„ ํด๋ฆฌํ•‘ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ๋งŒ ์•„๋‹ˆ๋ผ ์ง€์›์ด ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ UIKitViews๊ฐ€ UI ์š”์†Œ๋ฅผ ํด๋ฆฌํ•‘ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ๋ก์— ๊ด‘๊ณ ๊ฐ€ ์žˆ๋Š” UIKitView๋ฅผ ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ๋ณด๊ธฐ๋Š” TabBar ๋ฅผ ํ†ตํ•ด ์ž˜๋ฆฝ๋‹ˆ๋‹ค. ์ฆ‰, ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@SachinGanesh ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ›Œ๋ฅญํ•˜๊ณ  ์†”์งํžˆ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ์ธก๋ฉด์—์„œ ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ ์ตœ๊ณ ์ž…๋‹ˆ๋‹ค.
๋งˆ์นจ๋‚ด ๋ชจ๋“  ์š”์†Œ๊ฐ€ ํฌํ•จ๋œ UI์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ์„  ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋กœ๋“œ๋งต์„ GitHub ํŽ˜์ด์ง€์— ๊ฒŒ์‹œํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? IOS ์ง€์›์ด ์–ธ์ œ ๋‚˜์˜ฌ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

Flutter์˜ AndroidView ๋ฐ UiKitView๋Š” ํ”Œ๋žซํผ UI ๊ตฌ์„ฑ์š”์†Œ์˜ ์ €์ˆ˜์ค€ ์กฐ์ž‘์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋ฐ”์ผ ๊ด‘๊ณ  ์—”์ง€๋‹ˆ์–ด๋ง ํŒ€์ด ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ๊ณ  ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์€ ๋ฐฉ์‹์œผ๋กœ Google ๋ชจ๋ฐ”์ผ ๊ด‘๊ณ  SDK์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ๊ฒƒ์ด ๊ฑฐ์˜ ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. ์ ‘๊ทผ ๋ฐฉ์‹์ด ์ง€๊ธˆ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋”๋ผ๋„ MRAID ๊ธฐ๋Šฅ, ๊ด‘๊ณ  ์†Œ์žฌ์— ํฌํ•จ๋œ JS ์ฝ”๋“œ, ๋…ธ์ถœ ๋ฐ ํด๋ฆญ ์ธก์ •์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธ์ถœ ๋ฐ ํด๋ฆญ ํ†ต๊ณ„๊ฐ€ ๋น„์ •์ƒ์ ์ผ ๊ฒฝ์šฐ ๊ณ„์ •์ด ์ •์ง€๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์ด ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ๋‹น์‚ฌ์ž์™€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋™์•ˆ Flutter ํŒ€์˜ firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ๋ณด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AdMob ๊ด‘๊ณ ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @amirh <3

์ด๊ฒƒ์€ Flutter๊ฐ€ ๋ฌด๋ฃŒ ์•ฑ์„ ์œ„ํ•œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์„ ํƒ์ด ๋˜๊ธฐ ์œ„ํ•œ ์ ˆ๋Œ€์ ์ธ ํ•„์ˆ˜ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

Admob ํŒ€์—์„œ AndroidView ๋ฐ UiKitView๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์œ ํšจํ•œ ์†”๋ฃจ์…˜์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ @amirh ๊ฐ€ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋Œ€์ฒด ์†”๋ฃจ์…˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@charleshan ์€ ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์„ ์ถ”์ ํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด https://github.com/flutter/flutter/issues/12114#issuecomment-505633342 ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Google Admob์˜ ์ธ์ฆ๋œ Twitter ๊ณ„์ •์€ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ œ๊ณต๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์‹ถ์–ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. :).
image

์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋‚˜์š”?

ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์—๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๊ณผ ์ž ์žฌ์  ์†”๋ฃจ์…˜์ด ๋…ผ์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ์š”๊ตฌ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ด€์‹ฌ ์žˆ๋Š” ๋ฌธ์ œ์— ์—„์ง€์†๊ฐ€๋ฝ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”.

์œ„์ ฏ ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋กœ ํ”Œ๋žซํผ๋ณ„ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  UI๋ฅผ ํฌํ•จํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ๊ณ ๊ธ‰ ์ง€์›

์ด๋ฒˆ ํ˜ธ์—์„œ ์‚ฌ์šฉ๋œ '๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ '๋ผ๋Š” ์šฉ์–ด๋Š” '๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  '๋ผ๋Š” ํŠน์ • AdMob ๊ด‘๊ณ  ํ˜•์‹์„ ์˜๋ฏธํ•˜๋ฉฐ ํ˜„์žฌ ์ œํ•œ๋œ ์•ฑ ๊ฐœ๋ฐœ์ž(ํผ๋ธ”๋ฆฌ์…”)๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ด‘๊ณ ๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š” ๋ฐฉ์‹์„ ๋งž์ถค์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ด‘๊ณ ์— ๋Œ€ํ•œ ์ž์ฒด Android/iOS ๋ณด๊ธฐ๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ).

์—ฌ๊ธฐ์—์„œ ์„ค๋ช…ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ Android/iOS UI ๊ตฌ์„ฑ์š”์†Œ(Flutter ์œ„์ ฏ ์•„๋‹˜)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด‘๊ณ ๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š” ๋ฐฉ์‹์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ๋‚˜์ค‘์— ํ”Œ๋žซํผ์—์„œ ๋ Œ๋”๋ง๋˜๋Š” ๋Œ€๋กœ Flutter ์œ„์ ฏ ํŠธ๋ฆฌ์— ํฌํ•จ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

_์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ ํ˜ธ์—์„œ ์ถ”์ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค._

Flutter ์œ„์ ฏ ํŠธ๋ฆฌ์— AdMob ๋ฐฐ๋„ˆ ๊ด‘๊ณ  ํฌํ•จ

์ด๋ฒˆ ํ˜ธ์—์„œ ๋…ผ์˜๋˜๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์€ Flutter ์œ„์ ฏ ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋กœ AdMob ๋ฐฐ๋„ˆ ๊ด‘๊ณ  ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค(Firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‚ฌ์šฉํ•˜๋Š” ํ˜„์žฌ ์ ‘๊ทผ ๋ฐฉ์‹์€ Flutter UI ์ƒ๋‹จ์— ๋ฐฐ๋„ˆ ๊ด‘๊ณ ๋ฅผ ์˜ค๋ฒ„๋ ˆ์ดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค). ๋ฏธ๋ฆฌ ์„ค์ •๋œ ์œ„์น˜).

_์ด๊ฒƒ์€ #35081์—์„œ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์—„์ง€์†๊ฐ€๋ฝ์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค._

Flutter UI ์œ„์— ํ”Œ๋žซํผ๋ณ„ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  UI๋ฅผ ์˜ค๋ฒ„๋ ˆ์ดํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ๊ณ ๊ธ‰ ์ง€์›

์ด๊ฒƒ์€ firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํ˜„์žฌ ๋ฐฐ๋„ˆ ์ง€์›๊ณผ ๊ฑฐ์˜ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๊ธฐ๋ณธ ๊ด‘๊ณ ๋Š” ์ „์ฒด Flutter UI ์œ„์— ๋–  ์žˆ๋Š” ๊ณ ์ • ์œ„์น˜์— ํ‘œ์‹œ๋จ).

๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํžˆ ๋” ๋‚˜์€ ์˜ต์…˜์ด์ง€๋งŒ ํ˜„์žฌ ๋ฐฐ๋„ˆ ์ง€์›๊ณผ ์œ ์‚ฌํ•œ ์ด "ํ”Œ๋กœํŒ…" ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋” ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

_์ด ์˜ต์…˜์ด ๋„์›€์ด ๋œ๋‹ค๋ฉด ์—„์ง€์†๊ฐ€๋ฝ์„ #35082๊นŒ์ง€ ์ถ”๊ฐ€ํ•˜์„ธ์š”._

Flutter ๋ Œ๋”๋ง์œผ๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ๊ณ ๊ธ‰ ์ง€์›

์ฆ‰, ๋„ค์ดํ‹ฐ๋ธŒ Android/iOS์šฉ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ์™€ ์œ ์‚ฌํ•˜๊ฒŒ Flutter ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ต์…˜์€ ์•„๋งˆ๋„ ๋‹ฌ์„ฑํ•˜๊ธฐ ๊ฐ€์žฅ ์–ด๋ ต๊ณ  ๋ฏธ๋ž˜์—๋Š” ์•„์ง ๋ฉ€์—ˆ์Šต๋‹ˆ๋‹ค.

_์ด๋Š” #35083_์—์„œ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ž ์‹œ ๋™์•ˆ ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋”ฐ๋ผ์™”๊ณ  ๊ธฐ๋Šฅ์— ํˆฌํ‘œํ•˜๋ผ๋Š” ์ด ์š”์ฒญ์„ ๋†“์ณค์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ๊ฑฐ์˜ 18๊ฐœ์›” ๋™์•ˆ ๊ฐ€์žฅ ๋งŽ์ด ํˆฌํ‘œ๋œ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์˜€์œผ๋ฉฐ ์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•œ ํ‘œ์‹œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํˆฌํ‘œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋„์›€์ด ๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ช‡ ์ฃผ ์ „์— ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์„ ์—ฌ๊ธฐ์— ๊ณต์œ ํ•œ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ง€๋งŒ ๊ทธ/๊ทธ๋…€๊ฐ€ ๊ฒŒ์‹œ๋ฌผ์„ ์‚ญ์ œํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ Flutter ํŒ€์˜ ๋ถ„๊ธฐ๋ณ„ ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: https://twitter.com/flutterdev/status/1160961757118181378

๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์ด ๋ถ€๋ถ„:
image

๋ช‡ ์ฃผ ์ „์— ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์„ ์—ฌ๊ธฐ์— ๊ณต์œ ํ•œ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ง€๋งŒ ๊ทธ/๊ทธ๋…€๊ฐ€ ๊ฒŒ์‹œ๋ฌผ์„ ์‚ญ์ œํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ Flutter ํŒ€์˜ ๋ถ„๊ธฐ๋ณ„ ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: https://twitter.com/flutterdev/status/1160961757118181378

๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์ด ๋ถ€๋ถ„:
image

์„ค๋ฌธ์กฐ์‚ฌ๊ฐ€ ๋” ์ด์ƒ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๊ฐ€ ๋‹จ๊ธฐ๊ฐ„์— ํ•ด๊ฒฐ๋  ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Flutter ํŒ€/Google์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Admob ์‚ฌ์šฉ์ž์—๊ฒŒ ์—ฐ๋ฝํ•˜์—ฌ ์ž์‹ ์ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ Unity์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
https://developers.google.com/admob/unity/custom-native

๊ทธ๊ฒƒ์ด ์„ ํƒ ์‚ฌํ•ญ์ด ์•„๋‹ˆ๋ผ๋ฉด ๋‹น๋ถ„๊ฐ„ ๋Œ€์ฒด ์†”๋ฃจ์…˜์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ๋ฐฉํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌด๋ฃŒ ์•ฑ์„ ์ˆ˜์ตํ™”ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ผ์ข…์˜ ์ œํœด ํ”„๋กœ๊ทธ๋žจ ์„œ๋น„์Šค(CJ ์ œํœด์‚ฌ)๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค adtech์— ๋Œ€ํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@charleshan - ์ด๊ฒƒ์€ ์ฃฝ์€ ๊ธฐํšŒ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ด‘๊ณ  ๊ด€๋ฆฌ์ž ๋ฐ ๊ด€๋ จ flutter_ad_manager ์œ„์ ฏ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜์„ธ์š”. ๊ฑฐ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ํ‘œ์ค€ ๋ฐฐ๋„ˆ ๊ด‘๊ณ  ์†Œ์žฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์•ฑ์— ์—ฌ๋Ÿฌ ์œ„์ ฏ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  Firebase ํ”Œ๋Ÿฌ๊ทธ์ธ์ด https://github.com/flutter/plugins์—์„œ https://github.com/FirebaseExtended/flutterfire ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค .
ํ˜„์žฌ ๋ฌธ์ œ๊ฐ€ ์˜ค๋ž˜๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ? ๊ฑฐ๊ธฐ์—์„œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด์–ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ์ง€์›ํ•˜๋ ค๋ฉด ์ž ์žฌ์ ์œผ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ/์—”์ง„ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๋ฅผ ์œ ์ง€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์œ ๋งํ•ด ๋ณด์ž…๋‹ˆ๋‹ค: https://pub.dev/packages/native_ads. Android์—์„œ ์ž‘๋™ํ•˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ํ…Œ์ŠคํŠธ ๊ด‘๊ณ ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง iOS์—์„œ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. android/app/src/res/layout ๋””๋ ‰ํ† ๋ฆฌ์— native_ad_layout.xml์„ ์ถ”๊ฐ€ํ•˜๊ณ  packageName์„ applicationId๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋Š ์ •๋„ ์ง„ํ–‰์ด ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ๐Ÿ™Œ

https://github.com/FirebaseExtended/flutterfire/pull/169

@sethladd

์ด ๋ฌธ์ œ๋Š” https://github.com/FirebaseExtended/flutterfire/issues/968๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ํ˜‘์—…์€ ๊ทธ๊ณณ์—์„œ ์ด๋ฃจ์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

firebase_admob ๋ฌธ์ œ๋Š” Flutter ์ธก๊ณผ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ธก์—์„œ ์ž‘์—…ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ์—ฌ๊ธฐ์—์„œ๋„ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ์ถœํ•œ ๋ฐ์ดํ„ฐ์— ํฌ๊ฒŒ ์˜์กดํ•˜๋Š” ์•ฑ์—์„œ ์ˆ˜์ต์„ ์ฐฝ์ถœํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ ์™€ ํ•จ๊ป˜ ์ธ๋ผ์ธ์œผ๋กœ ๊ด‘๊ณ  ๋ชน ๋ฐฐ๋„ˆ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ๋ฐฉํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์ด ์ •๋ง ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ช‡ ๋‹ฌ ๋™์•ˆ ์ด๊ฒƒ์„ ์ž‘๋™์‹œํ‚ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋™์•ˆ iOS์—์„œ๋Š” ๋ฌธ์ œ ์—†์ด ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”, google admob์˜ ๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ์ง€์›ํ•˜๋Š” native_ads๋ผ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„์ง ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค.

native_ads ๋ฐ Flutter์˜ PlatformView ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋Š” ๊ธฐํƒ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์ฃผ์˜ ์‚ฌํ•ญ:

์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์ž‘์—…์„ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋ณด๋Š” ๊ฒƒ์€ ์ข‹์€ ์ผ์ด์ง€๋งŒ, ํ™”๋ฉด์— ๊ด‘๊ณ ๋ฅผ ๊ฒŒ์žฌํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋ฐ”์ผ ๊ด‘๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์—…์˜ ์ผ๋ถ€์ผ ๋ฟ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํ”Œ๋ ˆ์ด ์™ธ์—๋„ ๊ด‘๊ณ ๋Š” ๋…ธ์ถœ์„ ์ถ”์ ํ•˜๊ณ , ํด๋ฆญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , MRAID, AdChoices ๋ฐฐ์น˜, ์ŠคํŒธ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ ๋ฐ ์ „์ฒด ์‹ ํ˜ธ ๋ฌถ์Œ์˜ ์ •ํ™•ํ•œ ์ธก์ •๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ์šฉ Google์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์•„์ง ์—†๋Š” ์ด์œ ๋Š” ๋ชจ๋“  ๊ถŒํ•œ์„ ์–ป๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต๊ณ  ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ์ˆ˜์ต ์†์‹ค, ๋ถ€์ •ํ™•ํ•œ ํ†ต๊ณ„, AdMob ๋˜๋Š” ๊ธฐํƒ€ ๋‹ค๋ฅธ ๊ธฐ๊ด€์— ์˜ํ•œ ๊ณ„์ • ์ •์ง€๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ค‘์žฌ๋œ ๊ด‘๊ณ  ๋„คํŠธ์›Œํฌ.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ง€๊ธˆ์€ firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ๊ธฐ๋ณธ ๊ด‘๊ณ ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ์ง€์›ํ•˜๋Š” ํ˜•์‹์€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„๋œ ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

Google์—๋Š” ๋” ๋‚˜์€ ๊ด‘๊ณ  ํ†ตํ•ฉ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์žˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์—ฌ์ „ํžˆ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

native_ads ๋ฐ Flutter์˜ PlatformView ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋Š” ๊ธฐํƒ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์ฃผ์˜ ์‚ฌํ•ญ:

์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์ž‘์—…์„ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋ณด๋Š” ๊ฒƒ์€ ์ข‹์€ ์ผ์ด์ง€๋งŒ, ํ™”๋ฉด์— ๊ด‘๊ณ ๋ฅผ ๊ฒŒ์žฌํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋ฐ”์ผ ๊ด‘๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์—…์˜ ์ผ๋ถ€์ผ ๋ฟ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํ”Œ๋ ˆ์ด ์™ธ์—๋„ ๊ด‘๊ณ ๋Š” ๋…ธ์ถœ์„ ์ถ”์ ํ•˜๊ณ , ํด๋ฆญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , MRAID, AdChoices ๋ฐฐ์น˜, ์ŠคํŒธ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ ๋ฐ ์ „์ฒด ์‹ ํ˜ธ ๋ฌถ์Œ์˜ ์ •ํ™•ํ•œ ์ธก์ •๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ์šฉ Google์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์•„์ง ์—†๋Š” ์ด์œ ๋Š” ๋ชจ๋“  ๊ถŒํ•œ์„ ์–ป๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต๊ณ  ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ์ˆ˜์ต ์†์‹ค, ๋ถ€์ •ํ™•ํ•œ ํ†ต๊ณ„, AdMob ๋˜๋Š” ๊ธฐํƒ€ ๋‹ค๋ฅธ ๊ธฐ๊ด€์— ์˜ํ•œ ๊ณ„์ • ์ •์ง€๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ค‘์žฌ๋œ ๊ด‘๊ณ  ๋„คํŠธ์›Œํฌ.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ง€๊ธˆ์€ firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ๊ธฐ๋ณธ ๊ด‘๊ณ ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ์ง€์›ํ•˜๋Š” ํ˜•์‹์€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„๋œ ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

Google์—๋Š” ๋” ๋‚˜์€ ๊ด‘๊ณ  ํ†ตํ•ฉ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์žˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์—ฌ์ „ํžˆ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ตฐ์š” ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

native_ads ๋ฐ Flutter์˜ PlatformView ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋Š” ๊ธฐํƒ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์ฃผ์˜ ์‚ฌํ•ญ:

์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์ž‘์—…์„ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋ณด๋Š” ๊ฒƒ์€ ์ข‹์€ ์ผ์ด์ง€๋งŒ, ํ™”๋ฉด์— ๊ด‘๊ณ ๋ฅผ ๊ฒŒ์žฌํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋ฐ”์ผ ๊ด‘๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์—…์˜ ์ผ๋ถ€์ผ ๋ฟ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํ”Œ๋ ˆ์ด ์™ธ์—๋„ ๊ด‘๊ณ ๋Š” ๋…ธ์ถœ์„ ์ถ”์ ํ•˜๊ณ , ํด๋ฆญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , MRAID, AdChoices ๋ฐฐ์น˜, ์ŠคํŒธ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ ๋ฐ ์ „์ฒด ์‹ ํ˜ธ ๋ฌถ์Œ์˜ ์ •ํ™•ํ•œ ์ธก์ •๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ์šฉ Google์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์•„์ง ์—†๋Š” ์ด์œ ๋Š” ๋ชจ๋“  ๊ถŒํ•œ์„ ์–ป๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต๊ณ  ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ์ˆ˜์ต ์†์‹ค, ๋ถ€์ •ํ™•ํ•œ ํ†ต๊ณ„, AdMob ๋˜๋Š” ๊ธฐํƒ€ ๋‹ค๋ฅธ ๊ธฐ๊ด€์— ์˜ํ•œ ๊ณ„์ • ์ •์ง€๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ค‘์žฌ๋œ ๊ด‘๊ณ  ๋„คํŠธ์›Œํฌ.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ง€๊ธˆ์€ firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ๊ธฐ๋ณธ ๊ด‘๊ณ ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ์ง€์›ํ•˜๋Š” ํ˜•์‹์€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„๋œ ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

Google์—๋Š” ๋” ๋‚˜์€ ๊ด‘๊ณ  ํ†ตํ•ฉ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์žˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์—ฌ์ „ํžˆ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ ๊ด‘๊ณ  SDK๋Š” ๋…ธ์ถœ ์ถ”์ , ํด๋ฆญ ์ฒ˜๋ฆฌ, ์ŠคํŒธ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ ๋ฐ ์ „์ฒด ์‹ ํ˜ธ ๋ฌถ์Œ์˜ ์ •ํ™•ํ•œ ์ธก์ •์„ ๋‹ด๋‹นํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋„ค์ดํ‹ฐ๋ธŒ Android ์•ฑ์„ ๋นŒ๋“œํ•˜๊ณ  ์—ฌ๊ธฐ์˜ ์ง€์นจ์„ ๋”ฐ๋ฅด๋Š” ๊ฒฝ์šฐ์™€ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”? https://developers.google.com/admob/android/native/start

native_ads ๋ฐ Flutter์˜ PlatformView ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋Š” ๊ธฐํƒ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์ฃผ์˜ ์‚ฌํ•ญ:
์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์ž‘์—…์„ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋ณด๋Š” ๊ฒƒ์€ ์ข‹์€ ์ผ์ด์ง€๋งŒ, ํ™”๋ฉด์— ๊ด‘๊ณ ๋ฅผ ๊ฒŒ์žฌํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋ฐ”์ผ ๊ด‘๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์—…์˜ ์ผ๋ถ€์ผ ๋ฟ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํ”Œ๋ ˆ์ด ์™ธ์—๋„ ๊ด‘๊ณ ๋Š” ๋…ธ์ถœ์„ ์ถ”์ ํ•˜๊ณ , ํด๋ฆญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , MRAID, AdChoices ๋ฐฐ์น˜, ์ŠคํŒธ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ ๋ฐ ์ „์ฒด ์‹ ํ˜ธ ๋ฌถ์Œ์˜ ์ •ํ™•ํ•œ ์ธก์ •๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ์šฉ Google์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์•„์ง ์—†๋Š” ์ด์œ ๋Š” ๋ชจ๋“  ๊ถŒํ•œ์„ ์–ป๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต๊ณ  ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ์ˆ˜์ต ์†์‹ค, ๋ถ€์ •ํ™•ํ•œ ํ†ต๊ณ„, AdMob ๋˜๋Š” ๊ธฐํƒ€ ๋‹ค๋ฅธ ๊ธฐ๊ด€์— ์˜ํ•œ ๊ณ„์ • ์ •์ง€๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ค‘์žฌ๋œ ๊ด‘๊ณ  ๋„คํŠธ์›Œํฌ.
์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ง€๊ธˆ์€ firebase_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ๊ธฐ๋ณธ ๊ด‘๊ณ ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ์ง€์›ํ•˜๋Š” ํ˜•์‹์€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„๋œ ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
Google์—๋Š” ๋” ๋‚˜์€ ๊ด‘๊ณ  ํ†ตํ•ฉ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์žˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์—ฌ์ „ํžˆ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ ๊ด‘๊ณ  SDK๋Š” ๋…ธ์ถœ ์ถ”์ , ํด๋ฆญ ์ฒ˜๋ฆฌ, ์ŠคํŒธ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ ๋ฐ ์ „์ฒด ์‹ ํ˜ธ ๋ฌถ์Œ์˜ ์ •ํ™•ํ•œ ์ธก์ •์„ ๋‹ด๋‹นํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋„ค์ดํ‹ฐ๋ธŒ Android ์•ฑ์„ ๋นŒ๋“œํ•˜๊ณ  ์—ฌ๊ธฐ์˜ ์ง€์นจ์„ ๋”ฐ๋ฅด๋Š” ๊ฒฝ์šฐ์™€ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”? https://developers.google.com/admob/android/native/start

๋ฌธ์ œ๋Š” ํ”Œ๋žซํผ ๋ณด๊ธฐ์— ๋ถ€์ž‘์šฉ ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ ํ”Œ๋žซํผ์—์„œ ์ง์ ‘ ๋ณด๋Š” ๋™์ผํ•œ ๊ด‘๊ณ ์™€ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ์กฐํšŒ์ˆ˜์˜ ๋น„์œจ์ด ํ‘œ์‹œ๋  ๋•Œ ๊ด‘๊ณ  ๊ฐ€์‹œ์„ฑ์ด ๊ณ„์‚ฐ๋˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
๊ด‘๊ณ ์˜ ์ฒซ ๋ฒˆ์งธ ํ”ฝ์…€์ด ํ‘œ์‹œ๋˜๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐ ํผํ„ฐ์—์„œ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค๋Š” ๊ฒƒ์ด 100% ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์˜๋„ํ•˜์ง€ ์•Š์€ ํ™˜๊ฒฝ์—์„œ ๊ด‘๊ณ ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Google์—์„œ ์ด์˜๋ฅผ ์ œ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

์ ์–ด๋„ ํšŒ์ƒ‰ ์˜์—ญ์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ Flutter๊ฐ€ ๋ชจ๋ฐ”์ผ ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ๋งŒ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ด‘๊ณ  SDK์˜ ์ž‘์—… ์ˆ˜ํ–‰ ๋Šฅ๋ ฅ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊นŒ๋‹ค๋กœ์šด ์ผ์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ๋ง ๊ทธ๋Œ€๋กœ ๋ˆ„๊ตฐ๊ฐ€์˜ ์ƒ๊ณ„๋ฅผ ์ฑ…์ž„์งˆ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์—…์— ๋”ฐ๋ฅด๋Š” ์••๋ฐ•๊ฐ์— ๋”ํ•˜์—ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถœ์‹œํ•˜๊ธฐ ์ „์— ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ๋“ค์€ ๋ชจ๋‘ ์ œ3์ž ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๊ณต์ •ํ•œ ์š”์ ์ž…๋‹ˆ๋‹ค. Google์—์„œ ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋Š” ์ฆ‰์‹œ ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๋‰ด์Šค ํ”ผ๋“œ ์•ฑ์—์„œ ์ผํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ฒŒ์‹œ๋ฌผ์— ํ˜ผํ•ฉ๋œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ๋ฐฐ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐฉ์‹๋ณด๋‹ค๋Š” ์•ฑ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์„ ํƒํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ๊ด‘๊ณ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ชฉ๋ก ํ™”๋ฉด์„ Swift/Kotlin์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ๊ด‘๊ณ ๊ฐ€ ์—†๋Š” ๋‚˜๋จธ์ง€ ํ™”๋ฉด์€ Flutter์—์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

flutter_admob ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ˜„์žฌ Admob ์ •์ฑ…์— ๋”ฐ๋ผ ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” ๋ฐฐ๋„ˆ ๊ตฌํ˜„์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Œ์„ ์ง€์ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด "์•ฑ ์ฝ˜ํ…์ธ ์™€ ๊ฒน์น˜๋Š” ๊ด‘๊ณ "์™€ ๋Œ€๋ถ€๋ถ„์˜ Android์˜ ๊ฒฝ์šฐ "์•ฑ ํ•ญ๋ชฉ ์‚ฌ์ด์— ๋ผ์›Œ์ง„ ๊ด‘๊ณ "๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์—์„œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ "ํšŒ์ƒ‰ ์˜์—ญ"์— ์žˆ๊ฑฐ๋‚˜ Admob ์ •์ฑ… ํŽ˜์ด์ง€ ์ž์ฒด์— "์ •์ฑ… ๋ฐ˜๋Œ€"๋กœ ๋ช…์‹œ๋œ ๊ฒƒ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ์ตœ์•…์˜ ์ƒํ™ฉ์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿค”

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ตœ์†Œํ•œ ํ˜„์žฌ ์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ง„ํ–‰ ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ›์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ์Ÿ์ด ์น˜์—ดํ•œ ์˜ค๋Š˜๋‚ ์—๋Š” ์ตœ์†Œํ•œ ๊ฒฝ์Ÿ์— ๋’ค์ฒ˜์ง€์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํ™”๋ฉด์˜ ๋ฐฐ๋„ˆ ์˜ค๋ฒ„๋ ˆ์ด๋Š” ํŠนํžˆ ์•„๋ฆ„๋‹ค์šด ํ”Œ๋Ÿฌํ„ฐ UI/UX์™€ ์ง์„ ์ด๋ฃฐ ๋•Œ _๋งค์šฐ ์—ญ๊ฒน์Šต๋‹ˆ๋‹ค_.

๊ด‘๊ณ ๋กœ ์•ฑ์—์„œ ์ˆ˜์ต์„ ์ฐฝ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ์†”๋ฃจ์…˜์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์†Œ๊ทœ๋ชจ ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ Flutter๋ฅผ ๊ธฐํ”ผํ•˜๋Š” ํฐ ์ด์œ ๊ฐ€ ๋˜์ง€ ์•Š์„๊นŒ ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ฒผ์šด ์•ฑ์„ ๊ฐœ๋… ์ฆ๋ช…์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•œ ์ผ์ด์ง€๋งŒ ์ผ๊ด€๋œ ๊ด‘๊ณ  ์ˆ˜์ต์„ ๊ฐ€์ ธ์˜ค๋Š” ํ›„ํฌ๊ฐ€ ์—†์œผ๋ฉด ํ˜„์‹ค ์„ธ๊ณ„์—์„œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์ œํ•œ์ ์ธ ๋ฉ‹์ง„ ๋„๊ตฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๊ฑฐ์˜ 2 ๋…„์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉฐ์น  ์ „์— ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค: https://github.com/FirebaseExtended/flutterfire/pull/169

๋ฉฐ์น  ์ „์— ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค: FirebaseExtended/flutterfire#169

๊ทธ๋“ค์ด ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด ์ •๋ง ์ข‹์Šต๋‹ˆ๋‹ค. ์ž˜ํ–ˆ์–ด!
๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ๋ทฐ ๊ณ„์ธต ๊ตฌ์กฐ ๋‚ด๋ถ€์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋‚ด ์ดํ•ด์—, ์˜ค๋ฒ„๋ ˆ์ด๋กœ ์•„๋ž˜์ชฝ์—์„œ ๋ณด๊ธฐ๋ฅผ ํŒ์—…ํ•˜๋Š” show ๋ฉ”์„œ๋“œ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

MainActivity.kt๊ฐ€ ์žˆ๊ณ  MainActivity.java๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ?

์•ˆ๋“œ๋กœ์ด๋“œ๋งŒ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์ฃ ?

์•ˆ๋“œ๋กœ์ด๋“œ๋งŒ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์ฃ ?

IOS์˜ ๊ธฐ๋ณธ ๊ด‘๊ณ ๋„ ์ถ”๊ฐ€๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/FirebaseExtended/flutterfire/pull/2106

๊ทธ๋Ÿฌ๋‚˜ ๋ทฐ ๊ณ„์ธต ๊ตฌ์กฐ ๋‚ด๋ถ€์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋ž˜์—์„œ ๋ณด๊ธฐ๋ฅผ ์˜ค๋ฒ„๋ ˆ์ด๋กœ ํŒ์—…ํ•˜๋Š” ํ‘œ์‹œ ๋ฐฉ๋ฒ•๋งŒ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋กœ๋Š” ๊ฝค ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ด๊ฒƒ์˜ ์š”์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์•„๋ฌด ์†Œ์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ง ๊ทธ๋Œ€๋กœ Android ๋ ˆ์ด์•„์›ƒ์—์„œ๋งŒ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ๋„ˆ ๊ด‘๊ณ ์ž…๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ ๋ณด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ ๊ตฌํ˜„์ด ๊ด‘๊ณ  ๋ณด๊ธฐ ํ‘œ์‹œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‹ค์ œ๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌํ„ฐ ๋ณด๊ธฐ ์œ„์— ๊ธฐ๋ณธ Android ๋ณด๊ธฐ/iOS UIView๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๊นŒ?
์ „๋ฉด ๊ด‘๊ณ ์— ๋Œ€ํ•œ ์ƒˆ ํ™œ๋™์„ ๋งŒ๋“œ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ˆ„๊ตฐ๊ฐ€ ์ฝ”๋“œ์—์„œ ์ด๊ฒƒ์ด ์ˆ˜ํ–‰๋˜๋Š” ์œ„์น˜๋ฅผ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ”Œ๋Ÿฌํ„ฐ ์œ„์ ฏ ์œ„์— ๊ด‘๊ณ ๋ฅผ ์˜ค๋ฒ„๋ ˆ์ดํ•ฉ๋‹ˆ๋‹ค. ๊ด‘๊ณ ๋Š” ํ”Œ๋Ÿฌํ„ฐ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
์œ„์ ฏ ๊ณ„์ธต ๋”ฐ๋ผ์„œ ์œ„์ ฏ์— ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ
๋ชฉ๋ก ๋ณด๊ธฐ

2020๋…„ 4์›” 30์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 10์‹œ 32๋ถ„ dasebasto [email protected] ์ด(๊ฐ€) ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค:

๋‚˜๋Š” ํ˜„์žฌ ๊ตฌํ˜„์ด
ํ”Œ๋žซํผ ๋ณด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ด‘๊ณ  ๋ณด๊ธฐ.

ํ”Œ๋Ÿฌํ„ฐ ๋ณด๊ธฐ ์œ„์— ๊ธฐ๋ณธ Android ๋ณด๊ธฐ/iOS UIView๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๊นŒ?

๋ˆ„๊ตฐ๊ฐ€ ์ฝ”๋“œ์—์„œ ์ด๊ฒƒ์ด ์ˆ˜ํ–‰๋˜๋Š” ์œ„์น˜๋ฅผ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/flutter/flutter/issues/12114#issuecomment-621980272 ,
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AESIMECDHHOREM7OCD6UC63RPGVIVANCNFSM4D3FBARA
.

์ •๋ง ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ชจ๋“  ๊ฒƒ์˜ ์š”์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ธฐ๋ณธ ๊ด‘๊ณ ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ด๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ์œ„์น˜๋Š” ๋ชฉ๋ก ๋ณด๊ธฐ ๋‚ด๋ถ€์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ถ”๊ฐ€๋˜๋Š” ๊ฐ€์น˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ •ํ™•ํžˆ ์š”์ ์€ ์œ„์ ฏ ํŠธ๋ฆฌ์— ํฌํ•จํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•ฑ์˜ ์Šคํƒ€์ผ์— ๋งž์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐฐ๋„ˆ ๊ด‘๊ณ ๋„ ์œ„์ ฏ ํŠธ๋ฆฌ์— ํ†ตํ•ฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์œ„์ ฏ์„ ์ž ์‹œ ์‚ฌ์šฉํ•œ ํ›„ ์•ฑ์—์„œ ํ”Œ๋กœํŒ… ๋ฐฐ๋„ˆ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šด์ง€ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์•ฑ, ๋ฉ”๋‰ด, ๋ชฉ๋ก ๋ณด๊ธฐ, ํ•˜๋‹จ ๋Œ€ํ™” ์ƒ์ž ๋ฐ iOS์˜ ํ‘œ๋ฉด ๋“ฑ์˜ ๋งŽ์€ ์‹œ๊ฐ์  ์š”์†Œ๋ฅผ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ข…๋ฅ˜์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์œ„์ ฏ ๋ฐฐ๋„ˆ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌํ„ฐ ์›น์šฉ ์• ๋“œ์„ผ์Šค๋„ ๊ณ ๋ ค

ํ•œํŽธ์œผ๋กœ Flutter ํŒ€์€ ๋ฐ›์€ ์ถ”์ฒœ ์ˆ˜์— ๋”ฐ๋ผ ๋ฌธ์ œ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ •ํ•˜๊ณ (์ด ๋ฌธ์ œ๋Š” ํ˜„์žฌ ์ „์ฒด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ 4์œ„์ž…๋‹ˆ๋‹ค) ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ ์ด ๋ฌธ์ œ๋Š” "๊ธฐ๋Šฅ ๋˜๋Š” ๋ฒ„๊ทธ ์šฐ๋ฆฌ๋Š” ํ•ด๊ฒฐํ•  ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค."
๊ด‘๊ณ ๋ฅผ ํ†ตํ•ด ๋ชจ๋ฐ”์ผ ์•ฑ์—์„œ ์ˆ˜์ต์„ ์ฐฝ์ถœํ•˜๋Š” ์‰ฝ๊ณ  ์›ํ™œํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ด์ง€๋งŒ Flutter์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@kf6gpe ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ข€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด ํ‹ฐ์ผ“์— ์ฒจ๋ถ€๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€์ฐฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
"์ƒํƒœ๊ณ„ - ๋น„ํŠธ์ฝ”์ธ"์—๋Š” PlatformView์— ๋Œ€ํ•œ ๋งŽ์€ "๋‚ด์šฉ"์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด ๊ด‘๊ณ ์˜ ๋‹คํŠธ ๊ตฌํ˜„์„ ์–ป์ง€ ๋ชปํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Flutter ํŒ€์€ PlatformViews์˜ ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ์„ ๋จผ์ € ๊ฐœ์„ ํ•œ ๋‹ค์Œ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ ๊ด‘๊ณ  SDK๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋” ๋งŽ์€ ํˆฌ๋ช…์„ฑ์„ ๋†’์ด ํ‰๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–˜๋“ค์•„, ์šฐ๋ฆฌ ๋ญํ•˜๋Š”๊ฑฐ์•ผ? ์ด๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์šฐ๋ คํ•˜๋Š” ํ•œ ๊ธฐ๋ณธ์ ์œผ๋กœ cat 1 ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ์™„๋ฒฝํ•œ ์‡ผ์Šคํ† ํผ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ๋‚˜๋Š” ์ด ๊ธฐ๋Šฅ์ด 3๋…„ ์ด์ƒ ๋™์•ˆ ํฐ ์ง„์ „ ์—†์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•ด ํ•˜๋ฃจ ์ข…์ผ ์ฝ์€ ํ›„ ๋‹ค๋ฅธ ํ”Œ๋žซํผ ๊ฐ„ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ๋ฏธํ™” ๋ฐฐ๋„ˆ๋กœ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ง„ํ–‰ ์ƒํ™ฉ์œผ๋กœ ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ํ”Œ๋Ÿฌํ„ฐ ์œ„์ ฏ์— ๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ์˜ค๋ฒ„๋ ˆ์ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ™˜์ƒ์ ์ธ ํ”Œ๋žซํผ์„ ๊ณ„์†ํ•  ์ธ์„ผํ‹ฐ๋ธŒ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ Admob ๊ธฐ๋ณธ ๊ด‘๊ณ ๋„ ์•„๋‹ˆ์ง€๋งŒ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Facebook Audience Network ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ์šฉ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ Android์™€ iOS ๋ชจ๋‘์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

https://pub.dev/packages/facebook_audience_network

@jebwatson - https://pub.dev/packages/admob_flutter๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. AdMob ๋ฐ Flutter ๊ตฌํ˜„๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ง€๊ธˆ๊นŒ์ง€ ๋” ๋‚˜์€ ์˜ต์…˜์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” https://pub.dev/packages/native_ads ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

tidewatch

์ด๊ฒƒ๋„ ์•„์ง ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌํ„ฐ ๋ทฐ์™€ ํ•จ๊ป˜ AdMob ๋ฐฐ๋„ˆ๋ฅผ ์ธ๋ผ์ธ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Flutter ์•ฑ ์ƒ๋‹จ์— ๋ฐฐ๋„ˆ๋ฅผ ๋„์šฐ๋Š” ๊ฒƒ์€ ๋ณด๊ธฐ ํ‰ํ•˜๊ณ  ์ด ํ”Œ๋žซํผ์˜ ์ „์ฒด ๋ชฉ์ ์„ ํ›ผ์†ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” https://pub.dev/packages/native_ads ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

tidewatch

๋‚ด ๊ฑฑ์ •์€ ์ด๊ฒƒ์ด ํšŒ์ƒ‰ ์˜์—ญ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Google์ด ์„ค๊ณ„๋˜์ง€ ์•Š์€ ๊ด‘๊ณ  ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฐจ๋‹จํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ flutter ์œ„์ ฏ ํŠธ๋ฆฌ(์˜ˆ: ListView)์˜ ์ผ๋ถ€๋กœ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์†”๋ฃจ์…˜์€ ๊ฐ๊ฐ AndroidView ๋ฐ UiKitView ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ Android ๋ฐ iOS ๋ณด๊ธฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Flutter Docs์— ๋”ฐ๋ฅด๋ฉด ์ด๋Š” ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์ด๋ฏ€๋กœ ํ”ผํ•ด์•ผ ํ•˜๋ฉฐ ๊ฒฐ๊ณผ์ ์œผ๋กœ ์Šคํฌ๋กคํ•˜๋Š” ๋™์•ˆ ์ƒ๋‹นํ•œ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด Flutter ํŒ€์ด Flutter ๋˜๋Š” ๊ธฐํƒ€ ๊ฐœ์„  ์‚ฌํ•ญ์— ๊ธฐ๋ณธ ๋ณด๊ธฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๋” ๋น ๋ฅด๊ณ  ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Flutter ์œ„์ ฏ ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋กœ ๊ธฐ๋ณธ ๊ด‘๊ณ  ๊ตฌํ˜„์„ ์ง€์—ฐํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๊นŒ?

ํ•˜์ง€๋งŒ, ์•ˆ๋“œ๋กœ์ด๋“œ์™€ iOS์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ํ”Œ๋Ÿฌํ„ฐ/๋‹คํŠธ์—์„œ ์™„์ „ํžˆ admob(๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ )๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์„๊นŒ์š”?

ํ”Œ๋Ÿฌํ„ฐ ๋ชฉ๋ก ๋ณด๊ธฐ์—์„œ ๊ธฐ๋ณธ ๊ด‘๊ณ ๋ฅผ ์ง€์›ํ•˜๊ธฐ๋ฅผ ๊ฐ„์ ˆํžˆ ์›ํ•ฉ๋‹ˆ๋‹ค. ํŒ€์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ Flutter๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ์‹œ๊ธฐ์— ๊ด€ํ•œ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํƒ€์ž„๋ผ์ธ์ด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

AdMob์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํƒ€์‚ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค. ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๋กœ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ธˆ์ง€ํ•˜๋Š” Google์˜ ์•…๋ช…์„ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‘๋ ต์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋‹น์‚ฌ์ž์˜ ๊ตฌํ˜„์„ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํƒ€์ž„๋ผ์ธ์„ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ค๋Š˜ ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ฒ ํƒ€ ์ง€์› ๋ฐœํ‘œ์™€ ํ•จ๊ป˜ ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘์—๊ฒŒ ์ข‹์€ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.
Flutter์—์„œ ์ธ๋ผ์ธ ๋ฐฐ๋„ˆ ๋ฐ ๊ธฐ๋ณธ ๊ด‘๊ณ  ํ˜•์‹ ์ง€์›

์ง€๊ธˆ์€ ๋น„๊ณต๊ฐœ ๋ฒ ํƒ€ ๋ฒ„์ „์ด์ง€๋งŒ ํ”„๋กœ๋•์…˜ ์•ฑ์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์œผ๋ฉด ๊ฐ€์ž…์„ ์‹ ์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค . ๋ชจ๋“  ์ผ์ด ์ˆœ์กฐ๋กญ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด 2021๋…„ ์ดˆ์— ์ด๋ฅผ ๋” ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ๊ณต๊ฐœํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ฒ ํƒ€ ์ง€์› ๋ฐœํ‘œ์™€ ํ•จ๊ป˜ ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘์—๊ฒŒ ์ข‹์€ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.
Flutter์—์„œ ์ธ๋ผ์ธ ๋ฐฐ๋„ˆ ๋ฐ ๊ธฐ๋ณธ ๊ด‘๊ณ  ํ˜•์‹ ์ง€์›

์ง€๊ธˆ์€ ๋น„๊ณต๊ฐœ ๋ฒ ํƒ€ ๋ฒ„์ „์ด์ง€๋งŒ ํ”„๋กœ๋•์…˜ ์•ฑ์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์œผ๋ฉด ๊ฐ€์ž…์„ ์‹ ์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค . ๋ชจ๋“  ์ผ์ด ์ˆœ์กฐ๋กญ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด 2021๋…„ ์ดˆ์— ์ด๋ฅผ ๋” ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ๊ณต๊ฐœํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

๊ต‰์žฅํ•ดโค๏ธ. ๋ฒ ํƒ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹ ์ฒญํ•œ ์ง€ ๋ฉฐ์น ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์—ด์‹ฌํžˆ ๋‹ต์žฅ์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค โœจ

@timsneath
Firebase์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์‰ฝ๊ฒŒ ์ˆ˜์ต์„ ์ฐฝ์ถœํ•  ์ˆ˜ ์žˆ๋Š” Flutter ์•ฑ์„ ์œ„ํ•œ ์ด๋Ÿฌํ•œ ๋…ธ๋ ฅ์— ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์—๋„ ๊ฐ™์€ ๋…ธ๋ ฅ์ด ํˆฌ์ž…๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
๋จผ์ € _flutter web_ ์„ ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”๋กœ ๋งŒ๋“ค๊ณ  ์• ๋“œ์„ผ์Šค ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ ํ•œ ๋‹ค์Œ
๋ชจ๋“  flutter์˜ ์ง€์› ํ”Œ๋žซํผ ๊ฐ„์— _parity_ ๋ฅผ ๊ฐ–๊ธฐ ์œ„ํ•ด

๋ฒ ํƒ€ ํ”„๋กœ๊ทธ๋žจ๋„ ์‹ ์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค. ์‘๋‹ต์„ ๋ฐ›์€ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰