2017-01-19 4 views
0

은 사용자가 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을 사용하거나 이에 대한 고유 한 웹 서비스 구현을 작성할 수 있다고 생각합니다. 앱에서 더 효율적입니다. –

답변

0

내가 잘못하고있는 것이 아니라면 외부에서 직접 사파리 브라우저로 이동하지 않고 응용 프로그램에서 URL을 열고 싶습니다. 그렇다면 UIWebView을 사용해야합니다.

UIWebView 클래스를 사용하여 웹 콘텐츠를 앱에 포함 할 수 있습니다. 이렇게하려면 UIWebView 개체를 만들고 창에 첨부 한 다음 웹 콘텐츠로드 요청을 보냅니다. 이 클래스를 사용하여 뒤로 이동하여 웹 페이지 기록에서 전달할 수 있으며 프로그래밍 방식으로 일부 웹 웹 속성을 설정할 수도 있습니다.

WebViewController :

내가 (WebViewController라고 함)의 ViewController에있는 UIWebView를 추가하고 필요할 때의 ViewController을 제시하는 것이 좋습니다;

enter image description here이 그것을 위해 스토리 보드 ID를 할당하는 것을 잊지 마세요 :의 ViewController는 스토리 보드에해야처럼 보인다.

그리고의 ViewController :

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/" 

    } 
} 

또는 특별히 :

는 사용자가 다른의 ViewController의 버튼을 탭하면 당신이 그것을 제시 할 것을 고려 귀하의 사례 (셀 선택) :

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

귀하의 질문이 귀하가 액세스해야하는 외부 웹 사이트에 일부 데이터가 있음을 의미하므로 정보를 추출 할 수 있다면 렌더링 된 웹 페이지를 전혀 표시 할 필요가 없을 것입니다 .

당신은 당신이 텍스트는 그것을 밖으로 얻을 필요에 따라 분석 방법이

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) 
    } 

같은 페이지의 HTML 콘텐츠를 추출 할 수 있지만,이 방법은 당신이 필요로하는 데이터를 제공 할 것입니다.당신이 http보다는 https를 사용하는 경우

, 당신은 당신이 중 하나를 HTTP를위한 임시 재 지정을 설정하기 위해 강제로, 또는 https

Transport security has blocked a cleartext HTTP