LoginSignup
2

More than 5 years have passed since last update.

posted at

updated at

Organization

swift(ver2.2)でリダイレクト先のURLを取得する

リダイレクト先URL取得できなくなった

今までWKWebViewに対してObserverを使って"loading"時を監視していたが急に取得しなくなった(ver2.2から?)

Delegateでリダイレクトタイミングを取得する

WKNavigationDelegateを使ってリダイレクトのアクション通知を受け取る準備をしてリダイレクト前のURLを読み込みます。

サンプルコード

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var wkWebView: WKWebView!
    let url = NSURL(string: "http://goo.gl/fhjaj2")

    override func viewDidLoad() {
        super.viewDidLoad()
        wkWebView = WKWebView(frame: CGRectZero)
        let request = NSURLRequest(URL: url!)
        wkWebView.navigationDelegate = self
        wkWebView.loadRequest(request)
        self.view.addSubview(wkWebView)
    }

    func webView(webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {
        print(wkWebView.URL?.absoluteString)
    }
}

まとめ

http://goo.gl/fhjaj2
はtwitterにリダイレクトします。
モバイルなので2回リダイレクトしています。

Optional("https://twitter.com/")
Optional("https://mobile.twitter.com/")

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2