2016-01-21 30 views
2

我正在用Swift構建OS X Today窗口小部件。這應該通過HTTPS調用JSON API並顯示結果。到現在爲止還挺好。OS X Widget模擬器中無網絡連接(HTTPS)

但是,當我在Widget Simulator中運行小部件時,總是收到錯誤「無法找到指定主機名的服務器」。該URL是正確的,它在我在命令行上捲曲時起作用。看起來Widget Simulator沒有提供適當的DNS查找或完全阻止https流量。

我正在使用Alamofire,但我也嘗試過使用NSURLSession。同樣的結果。

let url = NSURL(string: "https://httpbin.org/get") 

let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in 
    debugPrint(error) 
} 

task.resume() 

,導致:

Optional(
    Error 
     Domain=NSURLErrorDomain 
     Code=-1003 "A server with the specified hostname could not be found." 
     UserInfo={ 
     NSUnderlyingError=0x7fe1f3e341a0 
     ErrorDomain=kCFErrorDomainCFNetwork 
     Code=-1003 "(null)" 
     UserInfo={ 
      _kCFStreamErrorCodeKey=-72000, 
      _kCFStreamErrorDomainKey=10} 
     }, 
     NSErrorFailingURLStringKey=https://httpbin.org/get, 
     NSErrorFailingURLKey=https://httpbin.org/get, 
     _kCFStreamErrorDomainKey=10, 
     _kCFStreamErrorCodeKey=-72000, 
     NSLocalizedDescription=A server with the specified hostname could not be found. 
    } 
) 

的Widget模擬器應該能夠做到外連接,是嗎?

回答

5

這是一個非常古老的問題,所以很確定你已經得到了你的答案,但我碰到了我之前認爲的同樣的問題,並且花了我很長時間才弄清楚。希望這會幫助別人更快地解決它。

您可以使用小部件模擬器連接到https。我的版本是1.0版(552.6)。我得到的錯誤是:2017-01-07 14:35:26.062370 MYAPP [18387:5719297] dnssd_clientstub ConnectToServer:connect()失敗路徑:/ var/run/mDNSResponder套接字:5錯誤:-1錯誤:1操作不允許

原來你必須打開ON應用程序沙箱,並明確允許網絡進出。我想我應該有rad文檔:https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/AddingCapabilities.html#//apple_ref/doc/uid/TP40012582-CH26-SW3

擴展有它自己的權利,所以一定要配置每個需要網絡的目標。

Turning ON Sandbox allows network connection