iOS/Swift
서버에서 받은 쿠키를 이용하여 웹뷰에 넣어서 사용한다고 작업 내용이 전달되었다. 일단 서버에서 HTTP통신으로 헤더(HttpResponse)로 쿠키를 가져왔다.// HttpResponse에서 쿠키로 변경func convertHTTPResponseToCookies(httpResponseHeaders: [AnyHashable: Any]) -> [HTTPCookie] { var cookies: [HTTPCookie] = [] if let headers = httpResponseHeaders as? [String: String] { for (key, value) in headers { if key.lowercased() == "Set-cookie" { ..
openSettingsURLString | Apple Developer DocumentationThe URL string you use to deep link to your app’s custom settings in the Settings app.developer.apple.comif let url = URL(string: UIApplication.openSettingsURLString){ UIApplication.shared.open(url)} 응용[앱 이름]>[알림]에서\n알림을 허용해" data-og-host="dev-geeyong.tistory.com" data-og-source-url="https://dev-geeyong.tistory.com/74" data-og-url="https://..
오류다른 ViewController에서 동시에 한 개의 webView를 사용하고 있던 중 아래 오류가 발생하였다.Completion handler passed to [webView:decidePolicyForNavigationAction:decisionHandler:] was called more than once원인webView에서 decideHandler나 completionHandler의 호출은 한 번 밖에 되지 않는다.해결CompletionHandlerWrapper Class를 선언하여 webView에 적용class CompletionHandlerWrapper { private var completionHandler: ((Element) -> Void)? private let defaultVa..
DispatchGroup : 하나의 단위로 모니터링할 수 있는 작업들의 그룹- 여러 작업을 그룹에 추가하고 동일한 Queue 또는 다른 Queue에서 실행되도록 예약할 수 있음- 그룹 내의 모든 작업이 실행 완료 후 completionHandler를 실행- 그룹의 모든 작업이 실행 완료할 때까지 동기적(sync)으로 기다릴 수 있음 // 그룹 생성let group = DispatchGroup()// main Queue를 group에 추가DispatchQueue.main.async(group: group){}// group의 작업이 완료되었을 때 main Queue에 알림group.notify(queue: DispatchQueue.main){} 참고 iOS Concurrency(동시성) 프로그래밍, 동기 ..
Swift에서 WKHTTPCookieStore를 사용하여 쿠키를 관리할 수 있다. WKHTTPCookieStore(Class) : 특정 웹뷰와 관련된 HTTP Cookie를 관리하는 개체 웹페이지의 초기 쿠키를 지정하고 웹 콘텐츠의 쿠키를 관리할 때 사용 예를 들어 사용자가 로그아웃을 할 때 현재 세션에 대한 쿠키를 WKHTTPCookieStore을 이용하여 쿠키를 삭제할 수 있음 쿠키 관리 // 저장된 모든 쿠키를 비동기로 가져와 지정된 completionHandler에 전달 func getAllCookies(([HTTPCookie]) -> Void){} // WKHTTPCookieStore에 쿠키를 추가 func setCookie(HTTPCookie, completionHandler: (() -> V..
WKScriptMessageHandler(Protocol) 웹페이지에서 실행되는 JavaScript 코드로부터 메시지를 수신하기 위한 인터페이스 웹 뷰 안에서 JavaScript message를 앱에서 응답하는 방법 특히 MessageHandler를 타겟으로 메시지를 전송하면 WebKit에서는 userContentController(_:didReceive:) 함수를 호출 JavaScript에서 MessageHandler를 호출하려면 아래 함수를 호출 window.webkit.messageHandlers..postMessage() WKMessageHandler에서 의 값을 지정 userContentController(_:didReceive:) 웹페이지가 script message를 전송했을 때 func u..