2017-05-15 17 views
0

私はwebviewと動的コンテンツを表示するuiviewを持つアプリを持っています。だから私はuiviewコンテンツをWebサーバーで動的に更新する必要があります。私は迅速なので、私は単一のwebviewからこのアプリを構築し、uiviewが最近追加された新しいです。間隔と非同期でHTTPリクエストを送信する方法

今のところ、私は愚かなコードを使用して、コンテンツの同期を維持します。 jsを使用すると、間隔を空けてhttpリクエストを非同期で行い、同時にスワイプコードを呼び出します。

JSコード、

$interval(function() 
{ 
    $http.get("http://192.168.1.66/uidata") 
     .success(function(response) 
     { 
      window.webkit.messageHandlers.startLive.postMessage(response.data); 
     } 
}, 3000); 

SWIFTコード、

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { 
    if(message.name == "startLive") { 
    startLive(message.body) 
    } 
} 

がどのように私はちょうど間隔および非同期でHTTPリクエストを行うためにネイティブSWIFTコードを使用することができますか?

ありがとうございます。

答えて

0

私は最終的にそれを作るために非同期的にTimerとURLSessionを使用します。

var timer: Timer? 

func startTimer() { 

    if timer == nil { 
     timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.loop), userInfo: nil, repeats: true) 
    } 
} 

func stopTimer() { 
    if timer != nil { 
     timer?.invalidate() 
     timer = nil 
    } 
} 

func loop() { 
    let liveInfoUrl = URL(string: "http://192.168.1.66/api/cloud/app/liveInfo/7777") 
    let task = URLSession.shared.dataTask(with: liveInfoUrl! as URL) {data, response, error in 
     guard let data = data, error == nil else { return } 
     print(String(data: data, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) ?? "aaaa") 
    } 
    task.resume() 
} 
関連する問題