1

Swift 2 を使用して構築している iOS 9 アプリで SFSafariViewController を使用しています。

何らかの理由で失敗する URL を開こうとしています。これを除いて、私が試した他のすべての URL は機能します。

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

URL は、シミュレーターの通常のモバイル Safari、iPhone、iPad、および任意のデスクトップ ブラウザーで問題ありません。このアプリで 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)
            })
        }
    }

このコードは問題なく動作し、前述のとおり、他の URL も問題なく読み込まれます。私が本当に必要としているのは、失敗の原因となっている safariViewController が遭遇したものをより詳細にデバッグする方法です。

このdidLoadSuccessfully == false行は、何が問題なのかを把握するためのデバッグ オプションをこれ以上提供しているようには見えません。

つまり、これをデバッグするにはどうすればよいですか? 読み込みエラーが発生した場合に何をチェックするかを説明するAppleのドキュメントには何も見つからないようです。

助けてください!ありがとう。

4

1 に答える 1

0

アプリから自発的に保護されており (実際には別のSFSafariViewControllerプロセスであっても驚かないでしょう)、プライバシーとセキュリティ上の理由から、アプリと共有される情報はほとんどありません。

UIWebVieworに基づいて同じものをロードしてみてくださいWKWebView(これにより、より多くのフィードバックが得られますが、Cookie やパスワードは Safari と共有されません)、次に何が起こるかを確認できます。

于 2016-02-15T22:43:00.000 に答える