iOS背景不起作用

时间:2015-01-19 15:59:34

标签: ios voip

我正在为iOS编写VoIP应用程序,但当App处于后台时,它会停止接听电话。当应用程序再次处于活动状态时,所有排队的消息都将开始处理。

以下是我所做的。

在构建应用程序时,我将IP语音以及音频和AirPlay添加到plist文件中。然后我用NetworkServiceTypeVoIP标记websocket连接,如您所见here

我没有设置保持活动超时处理程序,因为如果应用程序不会醒来接听电话,则注册并不重要。任何帮助将不胜感激。

应该注意的是,这是我的第一个Swift项目,我对iOS平台不是很熟悉。

3 个答案:

答案 0 :(得分:2)

要允许在后台模式下使用您的应用,您需要启用IP语音标记ON(路径:转到目标 - >功能 - >背景模式)。如下所示。

enter image description here

在项目中添加以下代码以支持后台:

步骤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应用,您必须执行以下操作:

     
      
  1. 从后台模式部分启用对IP语音的支持   Xcode项目中的Capabilities选项卡。 (您也可以启用此功能   支持将UIBackgroundModes键包含在voip值中   你的应用的Info.plist文件。)
  2.   
  3. 配置应用程序的其中一个套接字   VoIP使用情况。
  4.   
  5. 在移至后台之前,请致电   安装处理程序的setKeepAliveTimeout:handler:方法   定期执行。您的应用可以使用此处理程序来维护它   服务连接。
  6.   
  7. 配置音频会话以处理转换   来回使用。
  8.   

答案 2 :(得分:0)

您可以找到答案或一些线索 - &gt; here&lt; -

正确地研究以下内容:

applicationDidEnterBackground
beginBackgroundTaskWithExpirationHandler