2017-04-26 97 views
1

我正在为Swift 3开发iOS应用程序,此应用程序使用Bonjour服务搜索本地网络中的某些使用特定服务的机器人,例如robot.local并显示他们在一个列表中。 Bonjour服务给了我设备的领域。这是搜索的域的一个例子。当连接Rosbridge(网络套接字)时出错

例:

  • robot1.local

  • robot2.local

下一步,是当用户点击列表的元素。此操作通过网络套接字与设备启动连接,并将其与Iphone进行连接以控制它。我正在使用名为RBManager的库,它使用RocketSocket库进行连接。这个库可以帮助我连接到RosBridge。

我用这个代码连接:

NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"wss://192.168.0.100:9090"]]; 
self.socket = [[SRWebSocket alloc] initWithURLRequest:request]; 
self.socket.delegate = self; 
[self.socket open]; 

问题是,当我安装的Xcode中应用程序,我没有任何问题,但是当我通过IPA文件或TestFlight安装应用程序连接被拒绝,并显示以下错误:

managerDidFailWithError Optional(ErrorDomain=NSOSTatusErrorDomain Code=-9807 "(null)" UserInfo={_kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9807})

我发现这个issue在库中,但不是我需要的解决方案。

我在info.plist中是deactive ATS,但我不知道如何解决这个错误。任何人都可以帮我吗?

info.plist

回答

0

我发现这个问题。问题在于我的RosBridge后端以TLS运行,而我没有实现它。

该解决方案是在客户端实施身份验证和所有工作:D

+0

欢迎来到SO。请阅读此[如何回答](http://stackoverflow.com/help/how-to-answer)以提供高质量的答案。 – thewaywewere