我正在为iOS编写VoIP应用程序,但当App处于后台时,它会停止接听电话。当应用程序再次处于活动状态时,所有排队的消息都将开始处理。
以下是我所做的。
在构建应用程序时,我将IP语音以及音频和AirPlay添加到plist文件中。然后我用NetworkServiceTypeVoIP
标记websocket连接,如您所见here。
我没有设置保持活动超时处理程序,因为如果应用程序不会醒来接听电话,则注册并不重要。任何帮助将不胜感激。
应该注意的是,这是我的第一个Swift项目,我对iOS平台不是很熟悉。
答案 0 :(得分:2)
要允许在后台模式下使用您的应用,您需要启用IP语音标记ON(路径:转到目标 - >功能 - >背景模式)。如下所示。
在项目中添加以下代码以支持后台:
步骤1:将__block UIBackgroundTaskIdentifier bgTask声明为全局变量。
第2步:在applicationDidEnterBackground中添加以下代码。
- (void)applicationDidEnterBackground:(UIApplication *)application {
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
bgTask = UIBackgroundTaskInvalid;
}];
}
第3步:一旦应用进入前台模式,就停止后台任务处理程序。
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}
答案 1 :(得分:1)
看看Apple documentation,您可能对UIBackgroundModes=voip
感兴趣。
<强> UPD:强>
来自文档:
要配置VoIP应用,您必须执行以下操作:
- 从后台模式部分启用对IP语音的支持 Xcode项目中的Capabilities选项卡。 (您也可以启用此功能 支持将
UIBackgroundModes
键包含在voip值中 你的应用的Info.plist文件。)- 配置应用程序的其中一个套接字 VoIP使用情况。
- 在移至后台之前,请致电 安装处理程序的
setKeepAliveTimeout:handler:
方法 定期执行。您的应用可以使用此处理程序来维护它 服务连接。- 配置音频会话以处理转换 来回使用。
醇>
答案 2 :(得分:0)
您可以找到答案或一些线索 - &gt; here&lt; -
正确地研究以下内容:
applicationDidEnterBackground
beginBackgroundTaskWithExpirationHandler