์น์ฑ ์ฐ๋
์ง์ SDK ๋ฒ์
iOS SDK 2.27.0 ์ด์ ๋ฒ์ ์์ ์ง์ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
JavaScript SDK 11.24.1 ์ด์ ๋ฒ์ ์์ ์ง์ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
WKWebView
๋ฅผ ํตํด ์์ฌ ์น์ฌ์ดํธ๋ฅผ ๋๋๋งํ๋ ๊ฒฝ์ฐ, ๋ค์ ๊ฐ์ ์ค์ ์ ํตํด ์น์ฌ์ดํธ์ ํฌํจ๋ ํตํด JavaScirpt SDK๋ฅผ ์น์ฌ์ดํธ ์ฝ๋ ๋ณ๊ฒฝ์์ด ํตํด iOS 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)
...
(Optional) Webview Wrapper App ์ฐ๋
๋ง์ฝ ํตํด ์ด๋ฒคํธ๋ฅผ iOS SDK๊ฐ ์๋ JavaScript SDK๋ฅผ ํตํด ์์งํ๊ณ ์ถ๋ค๋ฉด ํตํด SDK๋ฅผ ์ด๊ธฐํ ํ ๋ HackleAppMode๋ฅผ web_view_wrapper
๋ก ์ค์ ํ๋ฉด ๋ฉ๋๋ค
let config = HackleConfigBuilder()
.mode(.web_view_wrapper)
.build()
Hackle.initialize(sdkKey: YOUR_APP_SDK_KEY, config: config) {
// SDK ready to use.
}
HackleConfigBuilder *builder = [[HackleConfigBuilder alloc] init];
[builder mode:HackleAppMode.web_view_wrapper];
HackleConfig *config = [builder build];
[Hackle initializeWithSdkKey:@"YOUR_APP_SDK_KEY" config:config completion:^{
// SDK ready to use.
}];
Updated about 1 month ago