์น์ฑ ์ฐ๋
์ง์ SDK ๋ฒ์ Flutter SDK 2.13.0 ์ด์ ๋ฒ์ ์์ ์ง์ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
JavaScript SDK 11.24.1 ์ด์ ๋ฒ์ ์์ ์ง์ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
์น์ฑ์ ๋ํด์๋ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
InAppWebView
๋ฅผ ํตํด ์์ฌ ์น์ฌ์ดํธ๋ฅผ ๋๋๋งํ๋ ๊ฒฝ์ฐ, ๋ค์ ๊ฐ์ ์ค์ ์ ํตํด ์น์ฌ์ดํธ์ ํฌํจ๋ ํตํด JavaScript SDK๋ฅผ ์น์ฌ์ดํธ ์ฝ๋ ๋ณ๊ฒฝ์์ด ํตํด Flutter SDK ๊ธฐ๋ฅ๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ ๋ชจ๋ ํตํด ์ด๋ฒคํธ๋ Futter SDK๋ฅผ ํตํด ์์ง๋ฉ๋๋ค.
import 'dart:collection';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:hackle/hackle.dart';
InAppWebView(
initialSettings: InAppWebViewSettings(
javaScriptEnabled: true,
),
initialUserScripts: UnmodifiableListView<UserScript>([
UserScript(
source: HackleApp.getWebBridgeScript(),
injectionTime: UserScriptInjectionTime.AT_DOCUMENT_START,
forMainFrameOnly: true
)]),
onWebViewCreated: (controller) {
controller.loadUrl(urlRequest: URLRequest(url: WebUri('YOUR_WEB_URL')));
},
onJsPrompt: (controller, jsPromptRequest) async {
if(HackleApp.isInvocableCommandInWebView(jsPromptRequest.message)) {
var result = await HackleApp.handleWebInterfaceCommand(jsPromptRequest.message);
return JsPromptResponse(action: JsPromptResponseAction.CONFIRM, handledByClient: true, value: result);
} else {
return JsPromptResponse(handledByClient: false);
}
},
);
ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ JavaScript ์นํ์ด์ง์์ ๋์ผํ App SDK ํค๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํตํด Flutter ์น๋ทฐ ์ค์ ์ ์๋๋ก์ด๋
Javascript Userscript
๋ฑ์ ์ด์ฉํ์ฌ ํตํด JavaScript SDK์ ์ํธ์์ฉํ๊ฒ ๋ฉ๋๋ค.
initialUserScripts
์ ๊ฒฝ์ฐ ์๋๋ก์ด๋ ํ๊ฒฝ์์ ์นํ์ด์ง ๋ก๋ ์ ์ ํธ์ถ๋จ์ ๋ณด์ฅ๋์ง ์์ ๋ฐ๋์onWebViewCreated
์์ ๋ฐํ๋controller
์์ ํ์ด์ง๋ฅผ ๋ก๋ํด์ฃผ์ธ์.
Updated 14 days ago