iOS背景不工作

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

以下是我所做的

当构建应用程序时,我将IP语音以及音频和AirPlay添加到plist文件.然后我可以看到here,标记与NetworkServiceTypeVoIP的websocket连接.

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

应该注意的是,这是我第一个Swift项目,我对iOS平台并不十分熟悉.

解决方法

要允许在后台运行应用程序,您需要启用IP语音IP标志(路径:转到目标 – >功能 – >后台模式).如下所示.

并在您的项目中添加以下代码支持后台

步骤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 inactive state; here you can undo many of the changes made on entering the background.

  [[UIApplication sharedApplication] endBackgroundTask:bgTask];


}

希望这能帮助你.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...