iOS 开发之应用内置Safari加载链接

2023-10-16  本文已影响0人  此笙吥涣

开发过程中遇到一个特殊的需求,由于使用企业二次签名的ipa包只有使用苹果默认浏览器(既Safari)才会弹出下载弹框,在我们自己的应用中,不想从App外部跳转到safari浏览器,那么就要放弃平时用的WKWebView加载企业签名应用下载链接了,此时可在应用内使用SFSarfariViewController进行加载链接,这样就不会跳出应用并且会弹出下载弹框。直接上代码
1、导入SafariServices框架

import SafariServices

2、在触发按钮或者Banner中加载

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
          showSafariViewController()
      }
    // MARK: Banner点击事件
    func showSafariViewController() {
        // URL
        let url = URL(string: "http://app.karang.cn/?deviceId=7E86073E-8266-4003-8668-E2092E172DB2&appKey=com.dk.MJFANGDAI&appMarket=_ios&version=1.2.0&groupId=1")
        // 创建SFSafariViewController
        let safariViewController = SFSafariViewController(url: url!)
        // 设置代理
        safariViewController.delegate = self
        
        // 显示
        self.present(safariViewController, animated: false) {
            var frame = safariViewController.view.frame
            frame.size = CGSize(width: frame.width, height: frame.height + KTabBarHeight)
//            frame = CGRectMake(0, -KNaviBarHeight, KScreenWidth, kScreenHeight+KTabBarHeight+KNaviBarHeight)
            safariViewController.view.frame = frame
        }
    }

3、遵守协议进行监听

extension HTClassHomeViewController: SFSafariViewControllerDelegate {
    // MARK: 点击左上角的完成
    func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
        print(#function)
    }

    // MARK: 加载完成
    func safariViewController(_ controller: SFSafariViewController, didCompleteInitialLoad didLoadSuccessfully: Bool) {
        print(#function)
    }
    
    // MARK: 点击右下角调用Safari浏览器打开
    func safariViewControllerWillOpenInBrowser(_ controller: SFSafariViewController) {
        print(#function)
    }
}

至此,已经实现了在应用内展示二次签名应用的下载弹框。

上一篇下一篇

猜你喜欢

热点阅读