2017-01-19 59 views
0

不開,我需要開url編程當用戶點擊cell,但並不需要順着接下去Safari browser。現場需要統計。如何打開URL編程,但在瀏覽器中迅速

這需要模仿像post request

我做的:

UIApplication.shared.openURL(URL(string: url)!) 

但這種開放Safari browser

+0

您必須使用WebView – iDeveloper

+0

只需使用'URLRequest'來執行此操作。 – zisoft

+0

如果您想分析您的應用,我認爲您可以使用Google -Firebase- Analytics,Fabric或爲此編寫自己的Web服務實現。這對您的應用程序更有效。 –

回答

0

如果我沒有弄錯,要打開的應用程序它自我的URL(不含導航到外部-Safari-瀏覽器)。那麼,如果是這樣的話,您應該使用UIWebView

您可以使用UIWebView類將Web內容嵌入到您的應用中。至 這樣做,創建一個UIWebView對象,將其附加到一個窗口,併發送一個 請求加載網頁內容。您也可以使用這個類回遷 和網頁歷史前進,你甚至可以通過編程設置一些網站 內容屬性。

WebViewController:

我建議一個UIWebView添加到視圖控制器(稱爲WebViewController)並在需要時呈現的ViewController;視圖控制器上的故事板應該是這樣的:

enter image description here

不要忘記分配一個Storyboard ID吧。

而視圖控制器:

class WebViewController: UIViewController { 
    @IBOutlet weak private var webVIew: UIWebView! 

    var urlString: String? 

    override func viewDidLoad() { 
     if let unwrappedUrlString = urlString { 
      let urlRequest = URLRequest(url: URL(string: unwrappedUrlString)!) 

      webVIew.loadRequest(urlRequest) 
     } 
    } 

    @IBAction private func donePressed(_ sender: Any) { 
     dismiss(animated: true, completion: nil) 
    } 
} 

用法:

考慮您想目前它當用戶點擊在另一個視圖控制器按鈕:

class ViewController: UIViewController { 
    @IBAction private func donePressed(_ sender: Any) { 
     let stoyrboard = UIStoryboard(name: "Main", bundle: nil) 

     // withIdentifier: the used storyboard ID: 
     let webViewController = stoyrboard.instantiateViewController(withIdentifier: "WebViewController") as! WebViewController 
     webViewController.urlString = "https://www.google.com/" 

    } 
} 

或者專門爲你的情況(選擇一​​個單元格):

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    // withIdentifier: the used storyboard ID: 
    let webViewController = stoyrboard.instantiateViewController(withIdentifier: "WebViewController") as! WebViewController 
    webViewController.urlString = "URL GOES HERE..." 
} 

希望這有助於。

0

如果你的問題實際上意味着你有,你需要訪問,這樣就可以抽取被從它的信息的外部網站上的一些數據,那麼你可能並不需要在所有的顯示着色的網頁。

您可以提取網頁中的HTML內容是這樣

var text = "" 

    let url = URL(string: "https://www.bbc.co.uk") 
    do 
    { 
     text = try String(contentsOf: url!, encoding: String.Encoding.utf8) 
    } 
    catch 
    { 
     print("error \(error.localizedDescription)") 
    } 
    if !text.isEmpty 
    { 
     parseThisPageSomehow(text) 
    } 

您如何分析文本取決於你需要把它弄出來什麼,但是這種做法會給你你需要的數據。

如果使用http而非https,你會遇到證據充分的運輸安全問題,這將迫使你要麼設置爲HTTP臨時替代,或開始使用HTTPS

Transport security has blocked a cleartext HTTP

相關問題