์๋ง๋ ์ด๊ฒ์ ์ง๋๋ ๋น๋์ค์ ์ ์ฌํ ์ฝ๊ฐ์ ํฉ์ฑ ์์ ์ด ํ์ํฉ๋๊น?
์ด์ ๋ํ ์ฌ์ฉ ์ฌ๋ก ์ถ๊ฐ:
์ผ๋ถ ๋ ๋๋ง์ WebView์์ ์ฒ๋ฆฌ๋์ง๋ง ํ์๊ณผ ๊ฐ์ ์ปจํธ๋กค์ ๊ธฐ๋ณธ UI ์์ ฏ์์ ์ฒ๋ฆฌ๋๋ ํ์ด๋ธ๋ฆฌ๋ Android ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ต๋๋ค. ์ ๋ Flutter๋ก ๋ฒ์ ์ ์ด์ํ๊ณ ์ถ์ต๋๋ค. ์ ๋จธ๋ฆฌ ์์์ ์ด๊ฒ์ด ์๋ํ๋๋ก ํ๊ธฐ ์ํ ์๊ตฌ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฌ๊ธฐ์ ๋ง์ง๋ง ํญ๋ชฉ์ ์ฌ์ฉํ๋ฉด 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๊ฐ ์์ผ๋ฉด ์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ ๋๋ค.
@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์ ์ด ๋ฌธ์ ์ ์๊ฐ์ ํ ์ ํ ์ ์์ต๋๋ค.
@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
๊ตฌํ์ผ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๊ธฐํ๋ฅผ ์ค๋ค๋ฉด ๋๋ ๊ทธ๊ฒ์ ๊ธฐ๋์ด๋ณด๊ณ ์ถ์ด!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
WebView ํ๊ณผ ํจ๊ป ๋ค์ํ ์๋ฃจ์ ์ ์ฐ๊ตฌํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ํ์ฌ ์์ ์๊ฐ์ ์์ง๋ง ์ด์ ๋ํด ์์ ์ค์ ๋๋ค. :/