Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在WiFi重新连接和设备重启(iOS)上维护VoIP套接字?_Iphone_Ios_Sockets_Wifi_Voip - Fatal编程技术网

Iphone 在WiFi重新连接和设备重启(iOS)上维护VoIP套接字?

Iphone 在WiFi重新连接和设备重启(iOS)上维护VoIP套接字?,iphone,ios,sockets,wifi,voip,Iphone,Ios,Sockets,Wifi,Voip,我有一个VoIP套接字设置,即使在挂起状态下也能正常工作,每10分钟ping一次服务器 但当WiFi连接断开时,我不知道如何重新连接到该服务,即使处于暂停状态。设备重启也是如此 有任何体验吗?如果设备重新启动,则无法再次启动应用程序。用户必须启动你的应用程序 当您的连接由于som类网络错误而中断,并且您的应用程序正在后台运行时,iOS将暂停您的应用程序。因此,用户必须再次启动应用程序才能正常工作。setKeepAliveTimeout:handler: 为VoIP应用程序配置定期处理程序 (B

我有一个VoIP套接字设置,即使在挂起状态下也能正常工作,每10分钟ping一次服务器

但当WiFi连接断开时,我不知道如何重新连接到该服务,即使处于暂停状态。设备重启也是如此


有任何体验吗?

如果设备重新启动,则无法再次启动应用程序。用户必须启动你的应用程序


当您的连接由于som类网络错误而中断,并且您的应用程序正在后台运行时,iOS将暂停您的应用程序。因此,用户必须再次启动应用程序才能正常工作。

setKeepAliveTimeout:handler:

为VoIP应用程序配置定期处理程序

  • (BOOL)setKeepAliveTimeout:(NSTimeInterval)超时处理程序:(void(^)(void))keepAliveHandler
参数

超时

唤醒应用程序以检查其VoIP连接的最大间隔(以秒为单位)。可接受的最小超时值为600秒。 keepAliveHandler 执行维护VoIP网络连接所需任务的块。将此参数设置为nil将释放当前处理程序块,并阻止UIKit安排下一次唤醒

返回值

如果已安装处理程序,则为“是”;如果未安装,则为“否”

讨论

IP语音(VoIP)应用程序可以使用此方法安装处理程序,其任务是维护应用程序与VoIP服务器的网络连接。此处理程序保证在指定的超时值之前调用,但可以在稍微不同的时间间隔调用,以便更好地将处理程序的执行与其他系统任务对齐,从而节省电源。处理程序最多有10秒的时间来执行任何需要的任务并退出。如果未在时间到期前退出,则应用程序将暂停

在应用程序启动之间不会持久化超时值和处理程序。因此,如果应用程序因任何原因终止,则必须在下一个启动周期中重新安装处理程序

要成功调用此方法,应用程序必须在其Info.plist文件中具有与UIBackgroundModes键关联的数组中的voip值。调用此方法将替换以前安装的处理程序和超时值(如果有)

可用性

在iOS 4.0及更高版本中提供

声明于

UIApplication.h

  • 糟糕的WiFI:iOS不允许您选择要绑定到套接字的网络,这意味着:
    • 如果设备只有2G/3G/4G网络,它将通过它绑定您的套接字
    • 如果你也有WiFi(也坏了WiFi),它会将你的插座绑在上面,即使这对你不好
  • 重新连接:您可以在UIApplication中使用10分钟KeepAlive块,以便每10分钟尝试修复一次连接:每10分钟唤醒一次,然后尝试重新连接
  • 自动启动的应用程序:设备重新启动后,如果VoIP应用程序在重新启动前运行,则该应用程序确实可以运行。(此VoIP应用程序privilegue也会在崩溃后启动您的应用程序)
  • 注意:您可以通过在ApplicationIDFinishLaunching中询问UIApplication的applicationState来检测您是否自动启动
  • 提示:在后台执行操作时使用后台任务
  • 链接:

  • 我听说iOS在重新启动时对注册/维护的VoIP套接字做了一些事情。所以你说没有办法实现上述内容?暂停应用程序不是问题。我的应用程序处于挂起模式,但会调用VoIP回调。我只是想知道Reach-ability framework是否也有类似的功能。文档中指出,如果voip应用程序以非零状态退出,则将重新启动。这只是文档中的一个复制粘贴,请同时包含指向它的链接