2016-03-26 5 views
3

NSURLSessionを持つWebサーバーからWatchOS 2.2アプリでJSONデータをダウンロードしようとしました。 iPhone自体で完璧に動作する同じコードは、(シミュレータを使用して)永遠に時計を使用します。NSURLSession with WatchOS 2.2非常に遅い

この例では、NSURLSession経由で画像をダウンロードして表示する機能を持つhttps://github.com/shu223/watchOS-2-Samplerをチェックしましたが、同じ問題があります。

この例のコードは次のとおりです。

let url = NSURL(string:"https://pbs.twimg.com/profile_images/3186881240/fa714ece16d0fabccf903cec863b1949_400x400.png")! 
    let conf = NSURLSessionConfiguration.defaultSessionConfiguration() 
    let session = NSURLSession(configuration: conf) 
    task = session.dataTaskWithURL(url) { (data, res, error) -> Void in 
     if let e = error { 
      print("dataTaskWithURL fail: \(e.debugDescription)") 
      return 
     } 
     if let d = data { 
      let image = UIImage(data: d) 
      dispatch_async(dispatch_get_main_queue(), {() -> Void in 
       if self.isActive { 
        self.image.setImage(image) 
       } 
      }) 
     } 
    } 
    task!.resume() 

はそれで遊んで、私は

let session = NSURLSession.sharedSession() 

にコードを変更した場合、それが正常に動作することを考え出しました。

しかし、デリゲートをセットアップする必要があるため、私はこのアプリをアプリケーションで使用できません。

私はそれを動作させるために何ができますか?

+0

あなたはどんな解決策を得ましたか? NSURLSessionを使用したデータ読み込みに時間がかかりすぎるOS 2.2 + –

答えて

1

私はまだwatchOS3で同じ問題が発生しています。ネットワーク要求が遅い。特に時計アプリが新しくインストールされたとき、最初のネットワークリクエストは通常​​非常に遅いです。それは30秒とタイムアウトがかかることがありますが、iOSでは即座に発生します。

しかし、iOSアプリを使用してネットワークリクエストを作成し、時計アプリに送信することですぐに改善が見られます。

watchOSでWCession sendMessage:replyHandler:errorHandlerを使用して、特定のネットワーク要求を行うようにiOSアプリに通知します。次に、ネットワーク要求からの応答をセッションのreplyHandler経由で返します。didReceiveMessage:replyHandler。わずかな遅れがあります。

sendMessageが失敗するたびに、私は時計アプリケーションから同じリクエストを行います。そのため、iPhoneが近くにない場合でも動作するはずです。

+0

コード例はありますか? –