μΉμ± μ°λ
μ§μ 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 2 months ago