【问题标题】:iOS Backgrounding Not WorkingiOS后台不工作
【发布时间】:2015-01-19 15:59:33
【问题描述】:

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

以下是我所做的。

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

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

需要说明的是,这是我的第一个Swift项目,对iOS平台不是很熟悉。

【问题讨论】:

标签: ios voip


【解决方案1】:

要允许您的应用在后台模式下运行,您需要启用 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];

}

【讨论】:

    【解决方案2】:

    看看苹果documentation,你可能对UIBackgroundModes=voip感兴趣。

    UPD:

    来自文档:

    要配置 VoIP 应用,您必须执行以下操作:

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

    【讨论】:

    • 如果链接失效或发生变化,您的回答会缩减为“您可能对UIBackgroundModes=voip.”感兴趣。你能把它充实一点,这样就不需要点击链接了吗?
    • 啊,那好多了。谢谢。
    【解决方案3】:

    你可能会找到你的答案或一些线索 --> here

    适当地研究以下内容:

    applicationDidEnterBackground
    beginBackgroundTaskWithExpirationHandler
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 1970-01-01
      相关资源
      最近更新 更多