Hybrid App 设置 - iOS SDK (v4)

    提示

    在进行 Hybrid App 设置之前,请先分别在 App 和网站上完成 iOS SDKWeb SDK 的安装。

    通过设置,您无需更改 Hybrid App 中网站的代码,也能让 iOS SDK 处理应用内网站中的 Airbridge 相关操作。

    使 iOS SDK 处理 Web SDK 操作

    iOS SDK 可以代替 Web SDK 处理事件发送、设备设置和用户设置等命令。在 WebView 中加载网站之前,请设置 Airbridge.setWebInterface 函数。

    YOUR_WEB_TOKENWeb SDK Token,可在 Airbridge 面板的 [设置]>[Token] 获取。

    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")!))
        }
    }

    在 WebView 中运行深度链接

    您可以通过添加 Airbridge.click 函数,在 WebView 中正常运行深度链接。由于 WebView 默认不支持深度链接,需要通过 Airbridge.click 函数设置,使 SDK 代替启用追踪链接中的深度链接。

    • Airbridge.click 函数在输入的地址为追踪链接时返回 true。当地址启用 App 时,会调用 onSuccess 函数;若无网络或启用了其他 App,则会调用 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)
    }

    注意事项

    Was this helpful?

    Any questions or suggestions?