我想知道哪个是正确的委托来暂停套接字连接以便以后恢复它以及原因。
从我在其他使用套接字的项目中看到和看到的内容,applicationWillResignActive
似乎是正确的,但我也注意到它被调用的频率太高了。 (即使在显示“Itunes InApp”购买对话框时)
我不想在没必要时关闭连接。就我而言,在Active状态下,应用程序仍然能够处理套接字,所以如果我在应用程序进入后台时关闭连接应该没有问题,但我不希望应用程序只是去背景无需确保连接正确关闭,并且错过了流程上的消息。
恢复连接时也是如此。截至目前,它位于applicationDidBecomeActive
代表身上,但也许更有意义的是applicationWillEnterForeground
。
有没有理由使用这个代表?
谢谢!
答案 0 :(得分:4)
所以,看到没有人回答,我觉得我应该根据进一步的测试,从我发现的内容中添加一些回应,所以这些问题不会得不到答案。
基本上,当应用程序进入后台时暂停/关闭连接并在应用程序进入前台时恢复/重新连接更有意义。
这背后的原因是applicationWillResignActive会经常发生,即使套接字连接仍然可以保持打开状态。在接收任何警报,呼叫或激活多任务时,应用程序仍处于活动状态且完全正常运行。
这也意味着,如果您使用应用内购买,当系统提示您输入iTunes详细信息时,连接将会关闭,如果您还使用自己的后端和需要管理这些购买,则可能会出现问题连接活着。
从我所看到的情况来看,当应用程序进入后台时,套接字连接无法再保持活动状态,应该可以安全地在applicationDidEnterBackground上关闭它。
作为旁注,请记住确保连接正确关闭,因为您只需要大约5秒钟就可以在此处执行任何操作,特别是如果您正在收听套接字关闭事件以执行某些操作。
同样,这是我的经验。如果您有关于此事的更多信息,请随时告诉我。