我正在为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; }]; }
- (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]; }
希望这能帮助你.