์›น์•ฑ ์—ฐ๋™

๐Ÿ“˜

์ง€์› SDK ๋ฒ„์ „

iOS SDK 2.27.0 ์ด์ƒ ๋ฒ„์ „์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
JavaScript SDK 11.24.1 ์ด์ƒ ๋ฒ„์ „์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

WKWebView ๋ฅผ ํ†ตํ•ด ์ž์‚ฌ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋žœ๋”๋งํ•˜๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ ๊ฐ™์€ ์„ค์ •์„ ํ†ตํ•ด ์›น์‚ฌ์ดํŠธ์— ํฌํ•จ๋œ ํ•ตํด JavaScirpt SDK๋ฅผ ์›น์‚ฌ์ดํŠธ ์ฝ”๋“œ ๋ณ€๊ฒฝ์—†์ด ํ•ตํด iOS SDK ๊ธฐ๋Šฅ๊ณผ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

...
self.webView = ...
HackleApp *hackleApp = [Hackle app];
[hackleApp setWebViewBridge:self.webView :NULL];
...
...
Hackle.app().setWebViewBridge(webView)
...

๐Ÿšง

ํ•ตํด iOS ์›น๋ทฐ ์„ค์ •์€ iOS UI Delegate ๋ฐ WKUserScript ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ํ•ตํด JavaScript SDK์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ WKWebView::load ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ด์ „์— ํ•ด๋‹น ์„ค์ •์ด ์™„๋ฃŒ๋  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์œ„์น˜์‹œ์ผœ ์ฃผ์„ธ์š”.

๐Ÿšง

ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” JavaScript ์›นํŽ˜์ด์ง€์—์„œ ๋™์ผํ•œ App SDK ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” UI Delegate๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” UI Delegate์™€ ํ•จ๊ป˜ ํ•ด๋‹น ํ•จ์ˆ˜๋กœ ์ „๋‹ฌํ•ด ์ฃผ์„ธ์š”.

...
self.webView = ...
self.myUIDelegate = ...
HackleApp *hackleApp = [Hackle app];
[hackleApp setWebViewBridge:self.webView :self.myUIDelegate];
...
...
Hackle.app().setWebViewBridge(webView, myUiDelegate)
...