You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
이전 글에서 `WKScriptMessageHandler` 프로토콜의 메소드`func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)`를 구현하여 웹 페이지에서 iOS 앱으로 데이터를 전달하는 방법을 살펴보았습니다.
8
+
이전 글에서 `WKScriptMessageHandler` 프로토콜의 메소드인`func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)`를 구현하여 웹 페이지에서 iOS 앱으로 데이터를 전달하는 방법을 살펴보았습니다.
9
9
10
10
이번 글에서는 `userContentController` 메소드에서 구현되는 if 문과 switch 문과 같은 흐름제어(Control Flow) 코드로 인해 `WKWebView`와 다른 도메인과의 강한 결합 관계가 형성되는 것을 살펴보려고 합니다.
11
11
@@ -15,17 +15,19 @@ Swift는 if, switch 문과 같이 제어문을 제공합니다. 이는 프로그
15
15
16
16
제어한다는 의미는 어떤 조건에 따라 코드의 실행을 중단하거나, 코드의 실행을 계속할지 결정하는 것을 의미합니다. 여기에서 각 도메인에서 필요한 Action을 처리하고 전달해야한다면 `userContentController` 는 많은 도메인과 강한 결합 관계를 형성합니다.
17
17
18
-
다음 코드는 웹페이지에서 전달받은 message의 action을 구분하여 처리하는 코드입니다.
18
+
다음 코드는 웹페이지에서 전달받은 message의 action을 구분하여 처리하는 코드입니다:
@@ -92,8 +99,8 @@ class ViewController: UIViewController, WKScriptMessageHandler {
92
99
}
93
100
```
94
101
95
-
`userContentController` 메소드에서 `actionHandlers` Dictionary에 등록되어 있는 `WKScriptMessageActioHandler`를 찾아 `closure`를 호출합니다. 이전과 같이 switch 문을 통해 action을 구분하여 처리하지 않기 때문에, 웹페이지에서 전달받은 action이 많아지더라도, 비즈니스 로직을 처리하는 코드가 없기 때문에 유지보수가 쉬워집니다.
102
+
`userContentController` 메소드에서 `actionHandlers` Dictionary에 등록되어 있는 `WKScriptMessageActionHandler`를 찾아 `closure`를 호출합니다. 이전과 같이 switch 문을 통해 action을 구분하여 처리하지 않기 때문에, 웹페이지에서 전달받은 action이 많아지더라도, 비즈니스 로직을 처리하는 코드가 없기 때문에 유지보수가 쉬워집니다.
96
103
97
104
`WKScriptMessageActioHandler`는 Closure만 가지고 있어, 각 ActionHandler가 messageBody의 값을 검증하여 유효한 값인 경우에만 Closure를 호출할 수 있도록 코드를 좀 더 구조화할 수 있지 않을까요?
0 commit comments