하이브리드 앱 설정하기 - iOS SDK (v4)

알립니다

하이브리드 앱 설정을 하기 전에 앱과 웹사이트에 각각 iOS SDK웹 SDK를 설치해 주세요.

하이브리드 앱에서 웹 사이트 코드를 변경하지 않아도 인앱 웹 사이트에서 발생하는 에어브릿지 관련 작업을 iOS SDK가 처리하도록 설정할 수 있습니다.

iOS SDK가 웹 SDK 동작 처리하기

iOS SDK는 웹 SDK에서 진행되는 이벤트 전송, 디바이스 설정, 유저 설정에 관한 명령을 대신 처리할 수 있습니다. 웹뷰에 웹 사이트를 표시하기 전에 Airbridge.setWebInterface 함수를 설정해 주세요.

YOUR_WEB_SDK_TOKEN웹 SDK 토큰입니다. 웹 SDK 토큰은 에어브릿지 대시보드의 [설정]>[토큰 관리]에서 확인할 수 있습니다.

123456789101112131415161718192021222324252627
import UIKit
import WebKit
import Airbridge

class ViewController: UIViewController, WKNavigationDelegate {
    let webView = {
        let configuration = WKWebViewConfiguration()
        let controller = WKUserContentController()
        Airbridge.setWebInterface(
            controller: controller,
            webToken: "YOUR_WEB_SDK_TOKEN"
        )
        
        configuration.userContentController = controller
        
        return WKWebView(frame: .null, configuration: configuration)
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        webView.navigationDelegate = self
        self.view = webView

        webView.load(URLRequest(url: URL(string: "YOUR_WEBSITE_URL")!))
    }
}

웹뷰에서 딥링크 동작하기

Airbridge.click 함수를 추가하여 웹뷰에서 딥링크를 정상적으로 실행할 수 있습니다. 웹뷰는 기본적으로 딥링크를 지원하지 않습니다. 따라서 Airbridge.click 함수로 SDK가 대신 트래킹 링크의 딥링크를 실행하도록 설정해야 합니다.

Airbridge.click 함수는 입력된 주소가 트래킹 링크면 true를 반환합니다. 그리고 주소로 앱을 실행하면 onSuccess 함수를 호출합니다. 인터넷이 없거나 다른 앱이 실행되면 onFailure 함수가 호출됩니다.

Airbridge.click 함수는 입력된 주소가 트래킹 링크가 아니면 false를 반환하고 어떠한 동작을 하지 않습니다.

WKWebView에서 webView(_,decidePolicyFor:,decisionHandler:)를 구현하면 특정 URL이 로딩되는 것을 확인한 후에 계속 로딩할지 또는 로딩하지 않을지 결정할 수 있습니다.

123456789101112131415161718192021222324
func webView(
    _ webView: WKWebView,
    decidePolicyFor navigationAction: WKNavigationAction,
    decisionHandler: @escaping (WKNavigationActionPolicy
) -> Void) {
    if let url = navigationAction.request.url {
        let isHandled = Airbridge.click(trackingLink: url) {
            // when url is tracking link and succeed
            // do nothing
        } onFailure: { error in
            // when url is tracking link and failed
            // example: url is another app's tracking link, internet is not connected
            webView.load(URLRequest(url: url))
        }
        if isHandled {
            // when url is tracking link
            decisionHandler(.cancel)
            return
        }
    }
    
    // when url is not tracking link
    decisionHandler(.allow)
}

주의사항

아래 사항을 주의해 주세요.

도움이 되었나요?

더 필요한 내용이 있나요?