Hlu*_*ung 4 tcp objective-c ios cocoaasyncsocket
这发生在设备而不是模拟器上。我打开了我的应用程序,并使用GCDAsyncSocket连接到服务器。当我按下主页按钮,将应用程序置于后台,然后切换回该应用程序时,套接字仍会连接。没问题
但是,如果我实际上锁定了设备,然后立即将其解锁,则插座会断开连接。来自- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err {委托方法的错误说...
错误:错误域= GCDAsyncSocketErrorDomain代码= 7“套接字被远程对等方关闭” UserInfo = 0x20051cb0 {NSLocalizedDescription =套接字被远程对等方关闭}
我已经检查了服务器,没有代码明确破坏连接。我认为与iOS相关的事情会在应用程序发送到后台时终止连接。但是,然后,我想知道是否是因为该应用程序已发送到后台,那么为什么主页按钮不会终止连接,而锁定设备却可以呢?
有没有什么办法解决这一问题?
=====当前进度=====
似乎没有解决方案。现在作为解决方法。我只是重新连接,如果它意外断开连接。将使这个问题无法解决,以期创造奇迹。;)
查看Apple的文档“应用程序状态和多任务处理”:
准备处理基于网络的套接字中的连接失败。挂起应用程序时,由于多种原因,系统可能会断开套接字连接。只要您的基于套接字的代码为其他类型的网络故障(例如信号丢失或网络转换)做好了准备,就不会导致任何异常问题。当您的应用恢复时,如果在使用套接字时遇到故障,只需重新建立连接即可。
锁定设备时,iOS可能会决定随时拆除插槽。我有不同的经验,有些插座会保持打开状态一段时间,但迟早会关闭。您必须通过捕获“应用程序将移至后台” /“应用程序将移至前台”状态更改通知来处理它。
一种解决方法是将您的应用声明为VoIP应用。这样可以使连接保持打开状态。但是,如果您的应用程序并未真正实现VoIP功能,而您想将其提交到应用程序商店,则可能会遭到拒绝。
| 归档时间: |
|
| 查看次数: |
3321 次 |
| 最近记录: |