Jiwift

[iOS/Swift] 웹뷰 브릿지 삭제, userContentController 제거 | removeScriptMessageHandler... (두개의 WebKit과 브릿지,) 본문

iOS Dev/Swift

[iOS/Swift] 웹뷰 브릿지 삭제, userContentController 제거 | removeScriptMessageHandler... (두개의 WebKit과 브릿지,)

지위프트 2023. 6. 25. 19:13
반응형

우선 브릿지 삭제 방법은 forName자리에 삭제하고 싶은 userContentController 입력

self.loginWKView.configuration.userContentController.removeScriptMessageHandler(forName: "bridge")

 

 

 


 

사실 이건 나만이 겪을 것 같은 상황이다.

 

다른분들은 이런 상황이 당연하게 없겠지만.. 혹시나 해서 기록

 

웹이 이미 개발이 완료된 상태였다. 그 와중에 나는 하나의 ViewController에서 두개의 Webkit을 사용해야했고, 브릿지 이름 또한 똑같은 두 화면이었다.

 

해보면 바로 알겠지만 userContentController는 같은 이름을 두개의 브릿지에 등록할 수 없다. 

self.oneWk.configuration.userContentController.removeScriptMessageHandler(forName: "bridge")
self.twoWk.configuration.userContentController.removeScriptMessageHandler(forName: "bridge")

이렇게하면 Xcode에서 에러를 뱉어낸다. 

 

그래서 두 화면이 교차되는 순간에 적용 가능한 로직으로 remove와 add를 두 Webkit 사이에서 계속 진행했다. 

(로직은 서비스마다 다를태니.. 각자 앱 동작에 맞게 구현해야합니다.)

대부분 개발 환경에서는 removeScriptMessageHandler를 쓸일이 없을 것 같지만.. 누군가에게 도움이 되기를.

 

 

 

 

[iOS/Swift] WebKit, window.open을 통해서 새로운 탭 열기 feat.nice 본인 인증. window.close (tistory.com)

 

[iOS/Swift] WebKit, window.open을 통해서 새로운 탭 열기 feat.nice 본인 인증. window.close

정답이 아닐 수 있습니다. 각자 상황에 맞는 방법을 찾아서 사용하시면 됩니다. 인터넷을 하다보면 새로운 창이 필요할 때가 있습니다. Nice 본인인증과 같은 상황이조. 근데 우리가 사용하는 앱

jiwift.tistory.com

[iOS/Swift] 웹뷰 브릿지 등록, WebKit과 브릿지, userContentController, 데이터 전송 (tistory.com)

 

[iOS/Swift] 웹뷰 브릿지 등록, WebKit과 브릿지, userContentController, 데이터 전송

세상에 많은 앱들은 네이티브 + 웹으로 구성되어있다. 코어한 부분은 네이티브로.. 수정이 많지만 배포를 줄이고 싶은 경우, 이미 웹으로 만들어서 두번 작업하기 싫은 경우. iOS에서는 WebKit을 사

jiwift.tistory.com

 

반응형