적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

초보 iOS 개발자의 일상/개발 업무

[Swift iOS] INIpayMobile WebView

hongssup_ 2021. 8. 30. 18:00
반응형

webView에서 결제를 할 수 있도록 이니페이모바일을 구현해주어야 한다. 

INIpay Mobile WEB 연동매뉴얼이 제공되어있긴 하지만 뭔말이신지... ㅠ 

 

1. 쿠키설정 - 항상 허용

이니페이를 IOS WebView에서 호출하고 안심클릭 계열 서비스를 사용하는 경우, 쿠키를 허용해주어야 한다고 하는데 예시 코드가 Object-C로 되어있더라. 찾아보았더니 Swift에서는 다음과 같이 사용할 수 있을 듯? 

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    ...
    HTTPCookieStorage.shared.cookieAcceptPolicy = HTTPCookie.AcceptPolicy.always
    ...
    return true
}

참고 : StackOverflow - Set Cookie for WebView manually

 

2. App scheme list 등록

info.plist - LSApplicationQueriesSchemes에 openUrl 함수로 호출할 scheme list를 등록해준다. 

상단의 매뉴얼 링크의 앱 환경의 설치방법(IOS)를 참고하여 카드회사들 앱 스키마 정보를 다 추가해주면 된다. 

 

(2021-10-21)

이렇게만 해주면 될 줄 알았는데...? 

결제 버튼을 눌러도 스키마 연결이 안된다...

열심히 구글링 하여 웹뷰에서 custom URL scheme 요청이 발생하는 경우, 네이티브 코드에서 직접 앱을 실행하도록 하는 방법을 찾아 적용해주었다. 감사합니다 😭🙏🏻😭🙏🏻

결제 앱 연결을 해줄 웹뷰의 WKNavigationDelegate에서 다음과 같이 설정을 해주니 연결이 잘 되더라!

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        if let url = navigationAction.request.url, url.scheme != "http" && url.scheme != "https" {
            UIApplication.shared.openURL(url)
            decisionHandler(.cancel)
        } else {
            decisionHandler(.allow)
        }
    }

WKWebView에서 외부 앱을 호출할 때는 위와 같이 적용을 해주면 될듯!

 

참고 : theteams - URL scheme으로 앱열기(StyleShare)

728x90
반응형