Flutter: ์ธ๋ผ์ธ Android ๋ฐ iOS WebView

์— ๋งŒ๋“  2015๋…„ 12์›” 04์ผ  ยท  99์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: flutter/flutter

์•„๋งˆ๋„ ์ด๊ฒƒ์€ ์ง€๋„๋‚˜ ๋น„๋””์˜ค์™€ ์œ ์‚ฌํ•œ ์•ฝ๊ฐ„์˜ ํ•ฉ์„ฑ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

mulligan (g3) framework first party plugin new feature

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

WebView ํŒ€๊ณผ ํ•จ๊ป˜ ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์„ ์—ฐ๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์˜ˆ์ƒ ์‹œ๊ฐ„์€ ์—†์ง€๋งŒ ์ด์— ๋Œ€ํ•ด ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค. :/

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

์ด์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ์ถ”๊ฐ€:

์ผ๋ถ€ ๋ Œ๋”๋ง์€ WebView์—์„œ ์ฒ˜๋ฆฌ๋˜์ง€๋งŒ ํƒ์ƒ‰๊ณผ ๊ฐ™์€ ์ปจํŠธ๋กค์€ ๊ธฐ๋ณธ UI ์œ„์ ฏ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ Android ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Flutter๋กœ ๋ฒ„์ „์„ ์ด์‹ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ œ ๋จธ๋ฆฌ ์œ„์—์„œ ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • WebView๋ฅผ ๋ Œ๋”๋ง๋œ ํŠธ๋ฆฌ์— ์ถ”๊ฐ€ํ•˜์—ฌ ํƒ์ƒ‰ ๋ฒ„ํŠผ๊ณผ ๊ฐ™์€ ์ธก๋ฉด์˜ ๊ธฐ๋ณธ ์œ„์ ฏ๊ณผ ํ•จ๊ป˜ ์‚ด ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • WebView์—์„œ JS์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•(์ด์™€ ๊ฐ™์€ ๊ฒƒ ).
  • WebView์—์„œ HTTP ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์˜ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜๋ฉด PDF ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ WebView๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Android ๊ตฌํ˜„์€ WebView์˜ HTTP ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„ ์š”์ฒญ๋œ PDF ํŒŒ์ผ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋‹ค์‹œ ์ŠคํŠธ๋ฆฌ๋ฐํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„์€ ์—ฌ๊ธฐ์—์„œ ๋ณผ ์ˆ˜

์ €๋Š” Flutter๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฉ์–ด๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค๋ช…์ด ํ•„์š”ํ•œ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ FlutterView์™€ ํ•จ๊ป˜ ๊ธฐ๋ณธ ๋ณด๊ธฐ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
https://docs.google.com/document/d/1DOfwpL6VojCAG_zjjcA_z5ekF7rTIohV8dWn2o7_IME/edit

์ด๊ฒƒ์€ Flutter ์œ„์ ฏ ํŠธ๋ฆฌ ๋‚ด์— WebView๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์›๋ž˜ ์˜๊ฒฌ์—์„œ ๋งํ–ˆ๋“ฏ์ด Flutter๊ฐ€ ์•„๋‹Œ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋น„๋””์˜ค ๋˜๋Š” ์ง€๋„๋ฅผ ์ž„๋ฒ ๋”ฉํ•˜๋Š” ๋ฐ ๋น„์Šทํ•œ ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

webview๋ฅผ flutter์™€ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ „์ฒด ํ™”๋ฉด ์›น ๋ณด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‹œ์ž‘ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค: https://github.com/dart-flitter/flutter_webview_plugin

ํ™œ๋™ ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์‹œ์ž‘์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์›น ๋กœ๊ทธ์ธ์—์„œ oauth ํ† ํฐ์„ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ์ „์ฒด ์•ฑ ์œ ํ˜• ์„ธํŠธ์˜ ์ž ๊ธˆ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

FWIW: iOS ๋ฒ„์ „์˜ webview ํ”Œ๋Ÿฌ๊ทธ์ธ PR์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/dart-flitter/flutter_webview_plugin/pull/3

@toufikzitouni ๐Ÿ‘ https://pub.dartlang.org/packages/flutter_webview_plugin ๋•๋ถ„์— ์ด์ œ IOS์— webview ํ”Œ๋Ÿฌ๊ทธ์ธ์ด

์ด๊ฒƒ์€ ๋‹จ๊ธฐ ์šฐ์„  ์ˆœ์œ„ ๋ชฉ๋ก์— ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ด์ •ํ‘œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

webview์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด์žฅ๋œ YouTube ๋™์˜์ƒ์„ ํ‘œ์‹œํ•˜๊ณ  ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ œ์–ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ https://github.com/dart-flitter/flutter_webview_plugin ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ผ๋ถ€ ์ƒํ™ฉ์—์„œ๋Š” ํ•ดํ‚น์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Flutter ์•ฑ์ด onUrlChange ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•œ ๋‹ค์Œ webview๋ฅผ ๋‹ซ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋™์˜์ƒ์ด ๋๋‚œ ํ›„ JavaScript์—์„œ webview URL์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

@csbenjamin ํŠนํžˆ WebView๋ณด๋‹ค https://developers.google.com/youtube/android/player/๋ฅผ ์ œ์–ดํ•˜์—ฌ ์„ ํ˜ธํ•˜๋Š” YouTube๋ฅผ ์ฐพ๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด WebView๋„ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๊นŒ? YouTube ์ „์šฉ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด ์ƒˆ ๋ฒ„๊ทธ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”. ์ด๋Š” ํ™•์‹คํžˆ ํ•ฉ๋ฆฌ์ ์ธ ์š”์ฒญ์ž…๋‹ˆ๋‹ค. :)

์˜ˆ, YouTube ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” webview์—์„œ ์•„๋ฌด๊ฒƒ๋„ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค, ๋‹จ์ง€ YouTube ํ”Œ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”

์šฐ๋ฆฌ๋Š” ์ง€๋ถˆ ์›น ์–‘์‹์„ ์—ด์–ด์•ผ ํ•˜๊ณ  ์ด ๊ธฐ๋Šฅ์€ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•œ ์ฐจ๋‹จ๊ธฐ์ž…๋‹ˆ๋‹ค ๐Ÿ˜ข

@megatolya webview ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‹น์‹ ์„ ์œ„ํ•ด ์ผ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

@lejard-h
๋ถˆํ–‰ํ•˜๊ฒŒ๋„. ํŽ˜์ด์ง€์˜ ์–ด๋Š ์œ„์น˜์—์„œ๋“  ์›น ์–‘์‹์„ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ฝ˜ํ…์ธ ์˜ ์ƒ๋‹จ์ด๋‚˜ ๋ณ„๋„์˜ ํŽ˜์ด์ง€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ. ์ˆ˜๋™์œผ๋กœ ์Šคํฌ๋กค์„ ์ œ์–ด(webview์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด)ํ•˜๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋„ˆ๋ฌด ๋ณต์žกํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ฌธ์ œ๊ฐ€ ์„ค๊ณ„์ƒ์˜ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ IMHO ์ด ๊ธฐ๋Šฅ์€ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ๊ธฐ๋ณธ์ ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋ ค๋Š” ๊ฒƒ์ด๋ฉฐ ๋งŽ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์ค‘์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์Šฌํ”„๊ฒŒ๋„ ์ด ๋ฌธ์ œ๋Š” ์œ„์—์„œ @jxson์ด ์–ธ๊ธ‰ํ•œ ๊ฒƒ๊ณผ Basecamp๊ฐ€ ์—ฌ๊ธฐ์— ๋ธ”๋กœ๊ทธ์—
https://m.signalvnoise.com/basecamp-3-for-ios-hybrid-architecture-afc071589c25

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

์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ๋œ ๋กœ๋“œ๋งต์— ๋Œ€ํ•ด ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ •๋ง ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ธ๋ผ์ธ WebView๊ฐ€ iOS์˜ Flutter์™€ ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์ž‘์—…์„ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. Android์—์„œ FlutterViews์˜ ์ธ๋ผ์ธ WebViews๋Š” ์กฐ๊ธˆ ๋” ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ๊ทธ๋ณด๋‹ค ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค. :/

์ด๊ฒƒ์€ ํ™•์‹คํžˆ ์šฐ๋ฆฌ ๋ชฉ๋ก์˜ ์ƒ๋‹จ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ ์ด๊ฒƒ์ด ๋ฒ ํƒ€์ธ์ง€ 1.0 ๋ฆด๋ฆฌ์Šค ์ฐจ๋‹จ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฒ ํƒ€ 1์ด ์ถœ์‹œ๋œ ์ดํ›„ WebView ์œ„์ ฏ ์ง€์›์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

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

@eseidelGoogle << ๋ฒ”ํ”„ >>

https://github.com/flutter/flutter/issues/73 ์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€์— ํ•„์š”ํ•œ ์ž‘์—…์€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์ƒํƒœ๋Š” ์ œ๊ฐ€ 17์ผ ์ „์— ๋ณด๊ณ ํ•œ ๊ฒƒ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. WebView์˜ ์ƒํ™ฉ์€ ์—ฌ๊ธฐ์— ์„ค๋ช…๋œ ์ง€๋„์™€ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. https://github.com/flutter/flutter/issues/73#issuecomment -367818217

Flutter์—์„œ Webview ์ƒ์„ฑ์„ ๊ณ ๋ คํ•˜๋Š” ๋™์•ˆ ๋ฌธ์ž์—ด์—์„œ html์„ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๊ณ  webview์— ๊ธฐ๋ณธ URL์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. , iOS(์•„๋ž˜ ์ฐธ์กฐ) ๋ฐ Android์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
webView.loadHTMLString(htmlString, baseURL: locationWhereResourcesAreLocated);

๋‚˜์—๊ฒŒ๋„ Flutter๋Š” HTML, ๋กœ์ปฌ ๋ฐ ์›๊ฒฉ URL์„ ๋กœ๋“œํ•˜๊ณ  JavaScript๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  WebView์—์„œ Flutter ์ฝ”๋“œ์™€ JavaScript ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์™„์ „ํ•œ ๊ธฐ๋Šฅ์˜ WebView ์ปจํŠธ๋กค ์—†์ด๋Š” ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

Flutter์™€ Web View ํ†ตํ•ฉ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ์ด๊ฒƒ์€ ๋˜ํ•œ ์ €์—๊ฒŒ ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

agreensh์— ๋™์˜ - ๋ฌธ์ž์—ด์˜ ํ•˜์ค‘์€ ์ผ€์ดํฌ์˜ ์žฅ์‹์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋กœ์ปฌ ํŒŒ์ผ(์ ์–ด๋„ Android์—์„œ๋Š”?)์—์„œ? file: URL์ด ์ž‘๋™ํ• ๊นŒ์š”? Assets ํด๋”์—์„œ ์ง์ ‘ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”

@IanDarwin https://github.com/dart-flitter/flutter_webview_plugin/issues/23#issuecomment -367618709 ์—ฌ๊ธฐ์—๋„ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— flutter๋ฅผ ์‚ฌ์šฉํ•  ๊ณ„ํš์ด์ง€๋งŒ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํ˜„์žฌ sdk๋Š” ๋‹ค๋ฅธ flutter ์œ„์ ฏ๊ณผ ํ•จ๊ป˜ webview๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋ฐ”์ผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ sdk๋กœ flutter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์ฃผ์š” ๋ฐฉํ•ด ์š”์†Œ์ž…๋‹ˆ๋‹ค.

Flutter๋Š” IMO๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๊นŒ์ง€ ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

@jaiminmehtadxred ์–ด๋ ต์ง€ ์•Š์€ ํ”Œ๋žซํผ๋ณ„ ์ฝ”๋“œ๋กœ webview๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@eseidelGoogle ์ง„ํ–‰ ์ƒํ™ฉ์ด ์–ด๋–ป์Šต๋‹ˆ๊นŒ? flutter_webview_plugin์€ ํ›Œ๋ฅญํ•˜์ง€๋งŒ webview๋Š” ์ธ๋ผ์ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ €ํฌ๋ฅผ ๋„์™€์ฃผ์„ธ์š” :)

์Šคํฌ๋กค ๊ฐ€๋Šฅํ•œ ์˜์—ญ(์ปฌ๋ ‰์…˜ ๋ณด๊ธฐ ์…€) ๋‚ด์—์„œ WKWebView ๋ฐ MKMapView์— ํฌ๊ฒŒ ์˜์กดํ•˜๋Š” ๋ฉ”์‹œ์ง• ์•ฑ(www.touchmoon.com)์ด ์žˆ์Šต๋‹ˆ๋‹ค. Android ์•ฑ์ด ๋’ค์ณ์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ReactNative๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋ ค๋Š” ๊ฐ•๋ ฅํ•œ ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(Skype๊ฐ€ ๊ทธ๋žฌ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ Discord, Instagram...).
์ €๋Š” Flutter๋ฅผ ์ข‹์•„ํ•˜์ง€๋งŒ ์ด ๊ธฐ๋Šฅ์ด ์—†๋‹ค๋Š” ๊ฒƒ์€ ๋” ์ด์ƒ ์ฃผ์žฅํ•  ์—ฌ์ง€๊ฐ€ ์—†๋Š” ํ•œ๊ณ„์ ์ž…๋‹ˆ๋‹ค.
์˜ˆ์ธกํ•œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด Flutter ์ผ๋ฅ˜ ์‹œ๋ฏผ์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

webview๊ฐ€ ๊ตฌํ˜„๋  ๋•Œ๊นŒ์ง€ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ๋Š” ์•ฑ์„ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค...์ƒํƒœ๊ฐ€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋งŽ์€ ๋””์ž์ธ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์ธ๋ผ์ธ webview๊ฐ€ ์—†์œผ๋ฉด ์•ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ž…๋‹ˆ๋‹ค.

https://gfycat.com/LawfulZanyGecko

@eseidelGoogle , @mit-mit , ์—ฌ๊ธฐ์„œ ๋งŽ์€ ๊ฒƒ์„ ์š”๊ตฌํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์ด์ „ ์ด์ •ํ‘œ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ธฐํšŒ๋ผ๋„ ์žˆ์Šต๋‹ˆ๊นŒ? ๋งŽ์€ ํ”„๋กœ์ ํŠธ์— ์ธ๋ผ์ธ ์›น๋ทฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ํ˜„์žฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ข…์ข… ์ข‹์ง€ ์•Š์€ ๋Œ€์•ˆ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๋งˆ์›Œ ์–˜๋“ค์•„! ps ๋ฒ ํƒ€ 4 ๋ฏธ๋””์—„ ํฌ์ŠคํŠธ๋ฅผ ๊ฐ„์ ˆํžˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :)

WebView ํŒ€๊ณผ ํ•จ๊ป˜ ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์„ ์—ฐ๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์˜ˆ์ƒ ์‹œ๊ฐ„์€ ์—†์ง€๋งŒ ์ด์— ๋Œ€ํ•ด ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค. :/

Flutter๊ฐ€ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฒ„์ „์„ ๊ฒŒ์‹œํ–ˆ์Œ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค์— ์ธ๋ผ์ธ WebView๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

์ด ๊ธฐ๋Šฅ์ด ์—†๋Š” ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” ์ €์—๊ฒŒ ์•ฝ๊ฐ„ ๋น„์ •ํ†ต์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์‹ค๋ง:

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

๊ทธ ๋™์•ˆ ์ด๊ฒƒ์ด ํ•„์š”ํ•˜๋ฉด OEM ์›น ๋ณด๊ธฐ๋ฅผ ๋งŒ๋“ค๊ณ  Flutter ๋ณด๊ธฐ ์œ„์— ๋ ˆ์ด์–ด๋งํ•˜์—ฌ Java/Kotlin ๋˜๋Š” ObjectiveC/Swift์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ์ด๊ฒƒ์€ ๋‚˜๋จธ์ง€ Flutter ์œ„์ ฏ๊ณผ ์ ์ ˆํ•˜๊ฒŒ ํ•ฉ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ์†”๋ฃจ์…˜์œผ๋กœ ์˜นํ˜ธํ•˜์ง€ ์•Š๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

์˜ˆ์ธกํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์”จ๋ฆ„ํ•˜๊ณ  ์žˆ๋Š” ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ์€ ์ง€์›ํ•  Android ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ์ง€์›ํ•˜๋Š” ๋ฒ„์ „์ด ๋งŽ์„์ˆ˜๋ก ์ข‹์€ ์†”๋ฃจ์…˜์„ ์–ป๋Š” ๋ฐ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ง€์›ํ•ด์•ผ ํ•˜๋Š” Android ์›น ๋ณด๊ธฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋ฒ„์ „์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ Android 6 ์ด์ƒ์ด๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์—๋Š” Android 5+๊ฐ€ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋„ 5+. 4.x๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ๋‚ฎ์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ฒซ ๋ฒˆ์งธ ๋นŒ๋“œ๋กœ ํ”Œ๋ ˆ์ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

๋ฅด ๋ฒค. 2018๋…„ 7์›” 22์ผ ร  06:27, ่ก€ๅฟƒ[email protected] a รฉcrit :

์ œ ์ƒ๊ฐ์—๋Š” Android 5+๊ฐ€ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๋ฅผ ์œ„ํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ 5+

Android 5.x๋Š” ~20%์˜ ์‹œ์žฅ ์ ์œ ์œจ์„ ๋ณด์ด๋ฉฐ ํ•˜๋ฝ ์ถ”์„ธ๊ฐ€ ๊ฐ•ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ 5.0(5% ๋ฏธ๋งŒ)์šฉ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ 6๊ฐœ์›”์ด ๊ฑธ๋ฆฐ๋‹ค๋ฉด ํ…Œ์ŠคํŠธํ•  ์ „ํ™”๊ธฐ๊ฐ€ ๋‚จ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
:-)
๋” ์‰ฝ๋‹ค๋ฉด ํ”Œ๋ž˜๊ทธ์‹ญ ๋ชจ๋ธ(7+)์šฉ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์ถœ์‹œํ•˜๊ณ (ํ•จ๊ป˜ ํ”Œ๋ ˆ์ดํ•  ์ˆ˜ ์žˆ๋„๋ก) ๊ณ„์† ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ด์ „ Android์— ๋Œ€ํ•œ ์ง€์›์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@iostriz ๋ถˆํ–‰ํžˆ๋„, ์šฐ๋ฆฌ๊ฐ€ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๋ฒ„์ „์— ๋”ฐ๋ผ ๊ฐ ๋ฒ„์ „์— ๋„์ž…๋œ ๋‹ค๋ฅธ API ๋•Œ๋ฌธ์— ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฒ„์ „ X๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ N๊ฐœ์›”์ด ๊ฑธ๋ฆฌ๊ณ  ๋ฒ„์ „ X-1์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ N+5๊ฐœ์›”์ด ๊ฑธ๋ฆฐ๋‹ค๋ฉด ๋ฒ„์ „ X๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ๋ฒ„์ „ X-1์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ 2N+5๊ฐœ์›”์ด ๊ฑธ๋ฆฌ์ง€๋งŒ ๋ฒ„์ „์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ N+5๊ฐœ์›”๋งŒ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. X-1๊ณผ X๋ฅผ ๋™์‹œ์—. ๊ทธ๊ฒŒ ๋ง์ด ๋œ๋‹ค๋ฉด.

5 ์ด์ƒ์ด ์‹œ์žฅ์˜ ๋Œ€๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ ํ›Œ๋ฅญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ธ๋ผ์ธ ์›น ๋ณด๊ธฐ๋Š” ๋งŽ์€ ์•ฑ์—์„œ ์ค‘์š”ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋‹ค์‹œ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

2018๋…„ 6์›” 21์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 10:09:44 -0700, Ian Hickson์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@iostriz ๋ถˆํ–‰ํžˆ๋„, ์šฐ๋ฆฌ๊ฐ€ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๋ฒ„์ „์— ๋”ฐ๋ผ
API๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•ฉ๋‹ˆ๋‹ค.
๊ฐ ๋ฒ„์ „์— ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฒ„์ „ X๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ N๊ฐœ์›”์ด ๊ฑธ๋ฆฌ๊ณ  N+5๊ฐ€
๋ฒ„์ „ X-1์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋ช‡ ๊ฐœ์›”, ๋ฒ„์ „ X๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ 2N+5๊ฐœ์›”์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฒ„์ „ X-1, ๋ฒ„์ „ X-1๊ณผ X๋ฅผ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ N+5๊ฐœ์›”๋งŒ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.
์‹œ๊ฐ. ๊ทธ๊ฒŒ ๋ง์ด ๋œ๋‹ค๋ฉด.

๊ทธ๋ ‡๋‹ค๋ฉด ๋‚˜๋Š” 6+์— ํˆฌํ‘œํ•  ๊ฒƒ์ด๋‹ค.

์šฐ๋ฆฌ ์ชฝ์—์„œ 5 ์ด์ƒ

5 ์ด์ƒ์€ ๋‚˜์—๊ฒŒ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

5+๋Š” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

5+๋Š” ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค

์ œ ์ƒ๊ฐ์—๋Š” 5+๊ฐ€ ๊ฐ€์•ผ ํ•  ๊ธธ์ž…๋‹ˆ๋‹ค.

WKWebView๊ฐ€ ์•„๋‹Œ โ€‹โ€‹์ •๋ง ํ›Œ๋ฅญํ•œ ์†”๋ฃจ์…˜์„ ๊ฐ–๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ ๊ธฐ์—ฌํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

@minikin WKWebView ์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๋ง์”€ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

Flutter ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ผ๋ถ€๋กœ html ์—”์ง„์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์€ ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” html ์—”์ง„์— ์œ„์ž„ํ•˜๋Š” ์†”๋ฃจ์…˜์ด ์™„์„ฑ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(iOS์—์„œ๋Š” WKWebView์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ).

์•ˆ๋“œ๋กœ์ด๋“œ 5+

@amirh
์˜ˆ๋ฅผ ๋“ค์–ด ํ˜„์žฌ๋กœ์„œ๋Š” ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฟ ํ‚ค๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(iOS11, 12beta). WKWebView๋Š” ๊ทธ๊ฒƒ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Flutter์—์„œ ์ผ์ข…์˜ WebView๋ฅผ ๋ณด๊ณ  ์‹ถ์€ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
d3js์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ผ๋ถ€ ์ •์  HTML ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

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

์ˆœ์ˆ˜ Flutter ์›น ๋ณด๊ธฐ ๊ตฌํ˜„(์˜ˆ: ๋ชจ๋“  ๊ฒƒ์ด Dart์—์„œ ๊ตฌํ˜„๋จ)์€ ๊ฐ€๋Šฅํ•˜๋ฉด(์•ฑ ์Šคํ† ์–ด ์ •์ฑ…์ด ์ œํ•œ ์š”์†Œ์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค) ๊ฑฐ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌํ„ฐ ๊ทธ ์ž์ฒด.

์›น ๋ธŒ๋ผ์šฐ์ € ์ฝ”๋“œ(์˜ˆ: cef )๋ฅผ ํฌํ•จํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์€ #7053์ด ํ•ด๊ฒฐ๋˜๋ฉด ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์—ฌ์ „ํžˆ ์ผ๋ถ€ ์•ฑ ์Šคํ† ์–ด ์ •์ฑ… ๋ฌธ์ œ์— ์ง๋ฉดํ•  ๊ฒƒ์ด๋ฉฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒ ์ฆ๊ฐ€์‹œํ‚ฌ ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

์›น ๋ณด๊ธฐ์— ๋Œ€ํ•ด ์ทจํ•ด์•ผ ํ•˜๋Š” ํ•ฉ๋ฆฌ์ ์ด๊ณ  ์‹ค์šฉ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ”Œ๋žซํผ์˜ ์›น ๋ณด๊ธฐ๋ฅผ Flutter์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ์ผ์„ ํ•˜๋Š” ๋ฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์†Œํ•œ ๊ธฐ์ˆ ์  ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ๋ณด๊ธฐ๋ฅผ ์ธ๋ผ์ธ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•˜๋ ค๋ฉด ์ด ํŠน์ • ๋ฌธ์ œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ผ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ์›น ๋ณด๊ธฐ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ํฐ ๋ฉ์–ด๋ฆฌ๊ฐ€ ํ’€๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ์ ์ฐจ์ ์œผ๋กœ ์ž‘์—…ํ•  ์›น ๋ณด๊ธฐ ๋ฌธ์ œ์˜ ๊ธด ๋ชฉ๋ก์ด ์—ฌ์ „ํžˆ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค(ํ”Œ๋žซํผ์˜ ์›น ๋ณด๊ธฐ ๊ธฐ๋Šฅ X ์ง€์›). ๋ณ„๋„์˜ ๋ฌธ์ œ์—์„œ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‹ค์šฉ์ ์ž…๋‹ˆ๋‹ค.

@amirh ์ž์„ธํ•œ ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

webview๋ฅผ flutter์™€ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

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

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ ๊ทน์ ์œผ๋กœ ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. #19030์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@amirh : ์•ผ! :+1:
@Hixie : Hey Hixie :) ๋‚ด ์•ฑ์—๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Android 4.4๋Š” ์ €์—๊ฒŒ ์š”๊ตฌ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋งŽ์€ ๊ตฌํ˜• ์žฅ์น˜๊ฐ€ ๊ทธ๊ฒƒ์— ๋ถ™์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

FWIW, ๋‚˜๋Š” ์žฅ์น˜์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๋‹ค์–‘ํ•œ WebView ๊ตฌํ˜„๊ณผ ๊ทธ๋กœ ์ธํ•œ ์žฅ์น˜ ์ข…์† ๋ฒ„๊ทธ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์•ฑ๊ณผ ํ•จ๊ป˜ ํŠน์ • ์›น ๋ Œ๋”๋ง ์—”์ง„์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด WebView/Chromium ๋˜๋Š” ๋” ๋‚˜์€ GeckoView๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์ข…์†์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์›น ์—”์ง„์„ ํฌํ•จํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ƒ๊ฐํ•ด ๋‚ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ฐจ๋‹จ๊ธฐ๋Š” #7053์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฆด๋ฆฌ์Šค ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๊ธฐ์— ์‚ฌ์†Œํ•œ ์˜ํ–ฅ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ผ๋ถ€ ์•ฑ์—์„œ๋Š” ๊ดœ์ฐฎ์„ ์ˆ˜ ์žˆ์Œ).
๋‚ด๊ฐ€ ํ˜„์žฌ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ Flutter์— ํ”Œ๋žซํผ์˜ ์›น ๋ณด๊ธฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ํ”Œ๋žซํผ WebView๋Š” ํ•ฉ๋ฆฌ์ ์ธ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ด๋ฉฐ ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ์ฐธ๊ณ  ์‚ฌํ•ญ์—๋Š” flutter ์•ฑ์—์„œ JavaScript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ webview ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ํ”Œ๋žซํผ ์ฑ„๋„์„ ์‚ฌ์šฉํ•˜๊ณ  js๋ฅผ ๋น„๋™๊ธฐ์‹์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™๊ธฐ ํ•จ์ˆ˜์—์„œ ์‹คํ–‰ํ•˜๊ณ  ๋ฏธ๋ž˜์˜ ๋นŒ๋”๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์•„์ด๋””์–ด?

@manujbahl ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.

์ข‹์€ ํ•˜๋ฃจ, ์ˆ˜๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค. flutter webView ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ setJavaScriptCanOpenWindowsAutomatically๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ?

์ด ๋ชฉ๋ก์— ๋งค๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค :)
html/css๋ฅผ ํ‘œ์‹œํ•˜๊ณ  API๋ฅผ ํ†ตํ•ด js, uri๋กœ ์ž‘์—…ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ณด์ด๋Š” ์ปจํŠธ๋กค์ด ์—†๋Š” ๊ฐ„๋‹จํ•œ ์ธ๋ผ์ธ webview๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. webview ์œ„์ ฏ:+1:

์‹ค์ œ webview๋Š” ๋‚˜์—๊ฒŒ ํฅ๋ฏธ๋กญ์ง€ ์•Š์ง€๋งŒ ์ธ๋ผ์ธ html/css + js ๋ฐ ํ™•์žฅ ์ฝ˜ํ…์ธ (์˜ˆ: Google ๋˜๋Š” js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ธ€๊ผด)๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ

#19030 ์›น ๋ณด๊ธฐ์šฉ AndroidView๋ฅผ ์‚ฌ์šฉํ•ด ๋ณธ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@MisterJimson ์—ฌ๊ธฐ์— WIP๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/flutter/plugins/tree/master/packages/webview_flutter

๊ธฐ๊ปํ•ด์•ผ ์ง€๊ธˆ ๋‹น์žฅ์€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ์ทจ๊ธ‰ํ•ด์•ผ ํ•˜๋ฉฐ ์•Œ๋ ค์ง„ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๊ณ  iOS ์ง€์›์ด ๋ˆ„๋ฝ๋˜์—ˆ์œผ๋ฉฐ API ํ‘œ๋ฉด์ด ๋งค์šฐ ์ตœ์†Œํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ด ์‹œ์ ์—์„œ iOS ์ด์•ผ๊ธฐ๋ฅผ ํŒŒ์•…ํ•  ๋•Œ๊นŒ์ง€ ์˜๋„์ ์œผ๋กœ ์ด ์‹œ์ ์—์„œ).

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” Android ๋ฐ iOS ์‹œ์Šคํ…œ ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•˜๋Š” "InAppBrowser" ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค: https://github.com/pichillilorenzo/flutter_inappbrowser

์ด ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค๋Š” Flutter API์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ธ๊ธฐ ์žˆ๋Š” cordova-plugin-inappbrowser๋ฅผ ์ด์‹ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค!!

@pichillilorenzo ๊ท€ํ•˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ธ๋ผ์ธ์ด ์•„๋‹ˆ๋ฉฐ ์ด ์ฑ„๋„์€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ธ๋ผ์ธํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@MichaelSowah ์˜ˆ, ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ œ๊ฐ€ "์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค"๋ผ๊ณ  ์ผ์Šต๋‹ˆ๋‹ค! Android ๋ฐ iOS์šฉ AndroidView ๊ฐ€ ์ถœ์‹œ๋  ๋•Œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์™œ ์—ฌ๊ธฐ ์ด๋ชจํ‹ฐ์ฝ˜์ด "์‹ซ์–ด์š”"์ž…๋‹ˆ๊นŒ? ์ตœ์†Œํ•œ ์„ค๋ช…์„ ํ•ด์ค˜

iOS์šฉ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ช‡ ๋…„ ๋™์•ˆ ๋ฐœํ–‰๋˜์—ˆ์ง€๋งŒ Flutter ์ž์ฒด์—์„œ webview _์•„๋ฌด๊ฒƒ๋„_ ์–ป์ง€ ๋ชปํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? HTML , CSS ๋ฐ JS _NCSA ๋ชจ์ž์ดํฌ_ ์ถœ์‹œ ์ดํ›„ ๊ฐ€์žฅ ํฐ ๊ธฐ์ˆ  ๋ฐœ์ „์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์ „๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๊นŒ? _์›น ๋ทฐ๊ฐ€ ์—†๋Š”_ _์•ฑ ๊ฐœ๋ฐœ์˜ ๋ฏธ๋ž˜๋ผ๊ณ  ํ•˜๋Š”_ ๊ธฐ์ˆ (๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ)์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? _Google_ the web ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€์š”? :๋ˆˆ์ง“:

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ์š”์ ์ž…๋‹ˆ๋‹ค : ์งˆ๋ฌธ :

์˜ˆ๋ฅผ ๋“ค์–ด, _inline webview_ ์ˆ˜๋‹จ์€ ์ „๋ ฅ๊ณผ์˜ _UI_ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค HTML , CSS ํฌ๋ง JS , _gitter webapp_์— ๋ฉ”์‹œ์ง€ _code_์ฒ˜๋Ÿผ ์›น๊ณผ ๊ฐ™์€ ๋””์Šคํ”Œ๋ ˆ์ด ๊ฒƒ๋“ค์„ํ•˜๋Š” _slack ์•ฑ_์€ _๊ตฌ๋ฌธ ๊ฐ•์กฐ ํ‘œ์‹œ_๋ฅผ ์œ„ํ•œ JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ widgets ์™€ webview ์ฐจ์ด์ ์€ ๋ชจ๋“  ์›น๊ณผ ์†Œ์œ„ RichText Boxes์˜ ์ฐจ์ด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค...

_hybrids_์—์„œ ์ˆ˜ํ–‰๋œ ๋ชจ๋“  ์ž‘์—…๊ณผ flutter์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์ด์— ์ฐจ์ด๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ webview์˜ ํž˜์€ ๋‹ค๋ฆ„ ์•„๋‹Œ ๋ธŒ๋ผ์šฐ์ €, _electron_, _atom_ ๋ฐ _VS Code_, ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ๋ž‘ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์˜ ํž˜์ž…๋‹ˆ๋‹ค. _๋งค์ผ_.

:ํ˜ผ๋ž€์Šค๋Ÿฌ์šด:

@flddr ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ํ•ด์„œ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ๊ทธ ๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค.
Google์—๋Š” ๋ฌด์ œํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ ํŒ€์— ์ถฉ๋ถ„ํ•œ ์ถ”๊ฐ€ ๊ฐœ๋ฐœ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ฆ‰๊ฐ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์Šฌํ”„๊ฒŒ๋„ ์„ธ์ƒ์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Flutter ํŒ€์ด ์ด ๊ธฐ๋Šฅ์˜ ์ค‘์š”์„ฑ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์•ˆ์‹ฌํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค. https://github.com/flutter/plugins/tree/master/packages/webview_flutter ์—์„œ ์ง„ํ–‰ ์ƒํ™ฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@zoechi ups, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋งํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค : ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค:

๋‚ด ์ƒ๊ฐ์— _hybrids_์™€ _natives_ ์‚ฌ์ด์˜ ๊ฒฉ์ฐจ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋” ๋งŽ์ด ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด flutter UI ์ž์ฒด๋Š” ์—„์ฒญ๋‚˜๊ฒŒ ๊ฐ•๋ ฅํ•˜๊ณ  ๊นจ๋—ํ•˜์ง€๋งŒ _webview์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ฐ€๋Šฅ์„ฑ์€ ๋” ๋‚ฎ์€ ํ’ˆ์งˆ(์˜ˆ: _material ๋ˆ„๋ฝ)๋กœ ๋๋‚  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. design_ ๋˜๋Š” ๊ทธ ์ ). webview ๋Š” ์ข…์ข… ๋ชจ๋“  ์ผ์— ์ž˜๋ชป ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์—(_quick n dirty_)

๋งํฌ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@flddr ๋‚ด ์ƒ๊ฐ์— ๋Œ€๋ถ€๋ถ„์€ Dart์—์„œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š๊ณ (ํ•ฉ๋‹นํ•œ ์ด์œ ๋กœ) Flutter์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ด ๊ธฐ๋Šฅ์€ ์ตœ๊ทผ์— ์ œ๊ณต๋˜์—ˆ์œผ๋ฉฐ ์ดํ›„ webview ๊ตฌํ˜„์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

https://pub.dartlang.org/packages/flutter_webview_plugin (์ปค๋ฎค๋‹ˆํ‹ฐ ํ™œ๋™)์€ ๊ฝค ์˜ค๋ž˜์ „๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ํ•ญ์ƒ Flutter ์œ„์ ฏ ์œ„์— ํ‘œ์‹œ๋œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋ž ๋ฉ”๋‰ด๋ฅผ ์—ด๋ฉด ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ webview ๋’ค์— ์—ด๋ฆฝ๋‹ˆ๋‹ค.
์ƒˆ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹ค๋ฅธ Flutter ์œ„์ ฏ๊ณผ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@zoechi ๋‹น์‹  ๋ง์ด ๋งž์•„์š” - ์ €๋Š” _dart์—์„œ ์žฌ์ž‘์„ฑ_์„ ์™„์ „ํžˆ ๊ฐ๋…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์—๋Š” ํ”Œ๋Ÿฌํ„ฐ๊ฐ€ ์•ฑ ๊ฐœ๋ฐœ์˜ ๋ฏธ๋ž˜์ด๊ณ , ๋„๊ตฌ๊ฐ€ ํ›Œ๋ฅญํ•˜๊ณ , ๋‹คํŠธ๊ฐ€ ํ›Œ๋ฅญํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ๋ฐฑ์—”๋“œ๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์— ๊นŠ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋งค์ผ flutter.io๋ฅผ ๋ณด๊ณ  1.0์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ์ด ํฌ๋ง์ ์ธ ๊ธฐ๋‹ค๋ฆผ์ด ๋ฌด์—‡์ด๋“  ๊ฐ„์— ์ด์•ผ๊ธฐ๋ฅผ ์ผ์œผํ‚ค๋ฉฐ, ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

webview ๋Œ€ํ•ด ๋ง์„ ์ž˜๋ชปํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

Btw: ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. _google_์ด ์–ด๋–ป๊ฒŒ ์ง€๋‚ด๋Š”์ง€ ์•Œ๊ณ  ์žˆ๊ณ  ์—ด์‹ฌํžˆ ์ผํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์˜ˆ, ๋‹น์‹ ์€ _google_์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฑด ์—†์Šต๋‹ˆ๋‹ค. _google_๊ณผ์˜ ์ฒซ ๋งŒ๋‚จ์€ _altavista_๋ฅผ ์‚ฌ์šฉํ•œ ๋งˆ์ง€๋ง‰ ๋‚ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฒฝ์ฃผ์—์„œ ์Šน๋ฆฌํ•  ํšŒ์‚ฌ์— ๋ฒ ํŒ…ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ €๋Š” _google_์— ๋ฒ ํŒ…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :) ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ์ด์ƒ ํ•  ๋ง์ด ์—†์Šต๋‹ˆ๋‹ค :)

Flutter๋Š” Skia๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋”๋งํ•˜๊ณ  Chrome์€ Skia๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋”๋งํ•˜๋ฏ€๋กœ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  Flutter ์•ฑ์ด Apple Store์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ๊ธˆ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฐฉ๋ฒ•์œผ๋กœ Flutter์— ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฉด Flutter๋Š” ๋ฒ„๋ ค์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Google์€ ์ด ๋ฌธ์ œ์— ์‹œ๊ฐ„์„ ํ• ์• ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://www.howtogeek.com/184283/why-third-party-browsers-will-always-be-inferior-to-safari-on-iphone-and-ipad/

@Rockvol ๋งค์šฐ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค ๐Ÿ‘

๋งˆ์ง€๋ง‰์œผ๋กœ, ๋‚˜๋Š” ์ƒˆ๋กœ์šด ๋ฒ„์ „ (v0.5.1)๋ฅผ ์ถœ์‹œ flutter_inappbrowser ์ธ๋ผ์ธ WebViews์˜ ์ดˆ๊ธฐ ์ง€์› (์ด InAppWebView ํด๋ž˜์Šค)! ๋ถ„๋ช…ํžˆ ์ด ์œ„์ ฏ์€ ํ˜„์žฌ Android์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ AndroidView ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์•ˆ์ •์ ์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ช‡ ๊ฐ€์ง€ ์ œํ•œ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฏธ ์กฐ๊ธˆ ๊ฐ€์ง€๊ณ  ๋†€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๊ณผ ์ด๋ฒคํŠธ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค! ์ธ๋ผ์ธ WebView์˜ ์˜ˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์ €์žฅ์†Œ์˜ README.md ํŒŒ์ผ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ 1 : Android ๋ฐ iOS ์ธ๋ผ์ธ ์›น๋ทฐ ์œ„์ ฏ์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ์ƒˆ ๋ฒ„์ „( 1.0.1 ) ์ถœ์‹œ! ๐ŸŽ‰

ํŽธ์ง‘ 2 : ์ด๋ฆ„์ด flutter_inappwebview ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „์€ 2.0.1์ž…๋‹ˆ๋‹ค ! ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ, ์˜ต์…˜ ๋ฐ ๋ฐฉ๋ฒ•์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Google Developer Days China(์ง€๋‚œ ๋‹ฌ)์—์„œ ๊ณต์‹ WebView ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ฐœ๋ฐœ์ž ํ”„๋ฆฌ๋ทฐ 2์™€ ํ•จ๊ป˜ ์ถœ์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ webview_flutter ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์•„์ง ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค: https://github .com/flutter/plugins/tree/master/packages/webview_flutter

@imWildCat GDD China์— ์ฐธ์—ฌํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด GDD์—์„œ WebView ์œ„์ ฏ์˜ _preview_๋ฅผ ์‹œ์—ฐํ–ˆ์Šต๋‹ˆ๋‹ค. GDD ๊ธฐ์กฐ์—ฐ์„ค์˜ ๋…นํ™” ์˜์ƒ (55:12)์„ ํ™•์ธํ•˜์—ฌ ๊ณต๊ฐœํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ถœ์‹œ๋˜์—ˆ๋‹ค๋Š” ์ธ์ƒ์„ ๋“œ๋ฆฐ ์  ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@InMatrix ์˜คํ•ด

flutter/plugins#890์€ webview_flutter ํ”Œ๋Ÿฌ๊ทธ์ธ์— iOS ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ธ๋ผ์ธ ์›น๋ทฐ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ํ”Œ๋žซํผ ๋ทฐ ์ž„๋ฒ ๋”ฉ ์ง€์›์€ ์•„์ง ์ดˆ๊ธฐ ํ”„๋ฆฌ๋ทฐ ์ƒํƒœ์ž…๋‹ˆ๋‹ค(https://github.com/flutter/flutter/issues/19030#issuecomment-437534853 ์ฐธ์กฐ).

๋ฏธํ•ด๊ฒฐ ๋ฌธ์ œ๋Š” ํ”Œ๋žซํผ ๋ณด๊ธฐ ๋ฐ/๋˜๋Š” ์›น ๋ณด๊ธฐ ๋ ˆ์ด๋ธ”๋กœ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ๊ด€์‹ฌ ์žˆ๋Š” ๋ฌธ์ œ์— ํˆฌํ‘œํ•ด ์ฃผ์„ธ์š”.

iOS์—์„œ ์‚ฌ์šฉํ•ด ๋ณด๋ ค๋ฉด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
https://github.com/flutter/flutter/issues/19030#issuecomment -437534853

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

์ตœ๊ณ ์˜ ๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ 1.0 ์ถ•ํ•˜๋“œ๋ฆฝ๋‹ˆ๋‹ค :tada:

์ด์ œ webview๋ฅผ ๊ธฐ๋‹ค

๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด: webview_flutter ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Android ๋ฐ iOS์— ํฌํ•จ๋œ WebView๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ํ˜„์žฌ ๊ฐœ๋ฐœ์ž ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” webview ํƒœ๊ทธ๋กœ ๋ฌธ์ œ ๋ฐ ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์„ ์ถ”์ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๋ฌธ์ œ์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์•„์ง ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๋ฌธ์ œ๋ฅผ ์ฐฌ์„ฑํ•˜์—ฌ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  PR๋„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜„

@amirh ์งˆ๋ฌธ์œผ๋กœ ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ

๋‚ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ, ๋‚˜๋Š” Flutter์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์›น ๋ณด๊ธฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๊ณ ์‹ฌ ๋์— ์ด ์ฃผ์ œ๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ์ด ์ƒˆ๋กœ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ(์—ฌ์ „ํžˆ ๊ฐœ๋ฐœ์ž ํ”„๋ฆฌ๋ทฐ)์€ ํ‚ค๋ณด๋“œ๋ฅผ ์—ด๋ ค๊ณ  ํ•  ๋•Œ Android์— ํฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ๋˜๋ฉด ํ•ด๊ฒฐ๋˜๊ฒ ์ฃ ?

๋‚˜๋Š” ์™ธ๋ถ€ ๊ธฐ๋Šฅ ์ธํ„ฐํŽ˜์ด์Šค + ์›นํ‚ท ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ผ์ธ ์•ˆ๋“œ๋กœ์ด๋“œ webview ๋˜๋Š” ios wkwebview๋Š” ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค

๋‚˜๋Š” ์™ธ๋ถ€ ๊ธฐ๋Šฅ ์ธํ„ฐํŽ˜์ด์Šค + ์›นํ‚ท ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ผ์ธ ์•ˆ๋“œ๋กœ์ด๋“œ webview ๋˜๋Š” ios wkwebview๋Š” ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค

์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค(๋ช…๋ฐฑํ•œ ๊ฒƒ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค).
ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ ์›น ์—”์ง„์„ ๋ฒˆ๋“ค๋งํ•˜๋Š” ๊ฒƒ์ด ์„ ํ˜ธ๋˜๋Š” ์„ ํƒ์ž„์„ ํ™•์‹คํžˆ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ํ”Œ๋žซํผ ์ธํ„ฐํŽ˜์ด์Šค ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ด๋ฅผ ๋Œ€์ฒด webview_flutter ๊ตฌํ˜„์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ธฐํšŒ๋ฅผ ์ค€๋‹ค๋ฉด ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๊ธฐ๋Œ€์–ด๋ณด๊ณ  ์‹ถ์–ด!

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