safariViewController调试 - URL未加载

时间:2016-02-08 21:28:41

标签: ios xcode swift sfsafariviewcontroller

我在使用Swift 2构建的iOS 9应用程序中使用SFSafariViewController。

我正在尝试打开因某些原因失败的网址。除了这个之外,我尝试过的其他网址很有用:

http://www.ctvnews.ca/sci-tech/33-engineers-to-be-recognized-at-sci-tech-oscars-1.2730223

在模拟器,iPhone,iPad和任何桌面浏览器中,常规移动Safari中的URL都可以正常使用。就在我尝试通过Swift在这个应用程序中访问它时,它失败了。

代码如下:

    func openInSafari(URLtoOpen: String) {
        print("Trying to openURL: " + URLtoOpen)
        let safariVC = SFSafariViewController(URL:NSURL(string: URLtoOpen)!, entersReaderIfAvailable: false)
        safariVC.delegate = self
        self.presentViewController(safariVC, animated: true, completion: nil)
    }

    func safariViewController(controller: SFSafariViewController, didCompleteInitialLoad didLoadSuccessfully: Bool) {
        // SFSafariViewController will present an error message in the browser,
        // but in this case we will dismiss the view controller and present our
        // own error alert.
        if didLoadSuccessfully == false {
            controller.dismissViewControllerAnimated(true, completion: { [unowned self] () -> Void in
                let alert = UIAlertController(title: "Could Not Load", message: "The URL could not be loaded.", preferredStyle: .Alert)
                alert.addAction(UIAlertAction(title: "Okay", style: .Default, handler: nil))
                self.presentViewController(alert, animated: true, completion: nil)
            })
        }
    }

这段代码工作正常,正如我所说,其他网址加载得很好。我真正需要的只是一种更详细地调试safariViewController遇到的导致它失败的方法。

didLoadSuccessfully == false行似乎没有提供更多的调试选项来了解出错的地方。

换句话说,我该如何调试呢?我似乎无法在Apple的文档中找到任何可以解释在加载错误的情况下要检查的内容。

请帮忙! 感谢。

1 个答案:

答案 0 :(得分:0)

SFSafariViewController会自动屏蔽app(我不会感到惊讶,如果它实际上是一个不同的过程),并且出于隐私和安全原因,与应用程序共享的信息非常少。

您可以尝试在UIWebViewWKWebView中加载相同的内容(这会为您提供更多反馈,但不会与Safari共享Cookie或密码),看看会发生什么