2015-06-19 24 views
2

我想打電話給我的本地API從我的手錶關掉我的房子照明,但我有從watchkit擴展中調用一個網址的麻煩。問題與Watchkit擴展NSURLSession斯威夫特

在我的視圖控制器(iPhone應用程序)我有完全相同的代碼(工作),但不知何故,當我把它在InterfaceController從Watchkit擴展它不起作用。

@IBAction func confirmTapped() { 

    let url = NSURL(string: "http://homeserver.local/api/lights/4/0") 
    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in 
     print(NSString(data: data!, encoding: NSUTF8StringEncoding)) 
    } 

    task!.resume() 
} 

我還附上了要點:https://gist.github.com/f72125cd4678069af7af.git

我失去了一些東西明顯?

回答

1

我不知道這是否是從關注擴展中開始NSURLSession一件好事。如果請求需要很長時間,它將被取消。

也許你可以通過openParentApplication ping通手錶:回覆和處理NSURLSession你的iPhone應用程序。

+0

這似乎是工作,只有我不得不使用的是WCSession SendMessage函數,而不是openParentApplication:因爲watchOS2的答覆。 –

2

雖然弗雷德裏克的建議是可行的建議爲WatchKit 1,openParentApplication:reply不再提供WatchKit 2. WatchKit 2,你反而會肯定在WatchKit應用擴展本身打開NSURLSession,因爲使用WCSession意味着該網址會只有當iPhone應用程序本身正在運行時纔會被打開,無論是在前臺還是由於系統尚未關閉而在後臺運行。

這可能是您所遇到的問題是,因爲你需要添加「允許任意負載」的WatchKit應用擴展屬性。請參閱本可能相關話題的討論:NSURLSession returns data as Null on Watch OS2 using Objective-C