2014-10-30 25 views
2

我正在检查xcode中的日志,而应用程序处于睡眠模式。我正在使用基于voip的应用程序。我已经完成了有关voip的所有手续。我可以让应用程序进入睡眠模式超过20分钟。但是,我断开设备与系统后,我已经运行在睡眠模式的应用程序。在3-4分钟内应用程序崩溃。我检查了设备日志崩溃。 它表示像在ios 7.1和ios 8.0中运行时,应用程序在睡眠模式下崩溃

< BKProcessAssertion:0x1463ab50> ID:XXX-XXX-XX ...名: SwyxOTT调用,从 - [应用enterIntoBackgroundState]过程: < BKNewProcess:0x14529680; com.aahlaad.SwyxiOSClient; PID:289> permittedBackgroundDuration:180.000000原因:finishTask所有者 PID:289 preventSuspend preventIdleSleep preventSuspendOnSleep

我使用keepalive超时功能。你可以看到下面的功能。我正在使用UDP连接,pjsip 2.2.1。

[self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES]; 
       [[UIApplication sharedApplication] setKeepAliveTimeout:KEEP_ALIVE_INTERVAL handler: ^{ 

[self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES]; 

       }]; 

有没有人知道这个问题请让我知道。

回答

0

试试这个。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [UIApplication sharedApplication].idleTimerDisabled=YES; 
} 
+1

感谢您的答复。这是解决这个问题,我不确定。 – 2014-10-31 08:30:16

+0

亲爱的朋友请不要忘记接受答案。 – bhavik 2014-11-03 04:43:47

+0

这并不能解决他的崩溃问题,也不会在屏幕关闭时使其应用程序保持活动状态。它所做的就是防止iOS自动调暗并最终关闭屏幕。每[Apple文档](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/#//apple_ref/occ/instp/UIApplication/idleTimerDisabled):'唯一的应该禁用空闲计时器正在映射应用程序,游戏或程序,当用户交互最少时,应用程序需要继续显示内容 – 2015-01-08 01:51:47

2

这个崩溃是调用-beginBackgroundTaskWithExpirationHandler:不匹配的-endBackgroundTask:的结果。最起码,你应该结束到期处理程序中的后台任务,因为这样的:

__block UIBackgroundTaskIdentifier backgroundTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 
    [[UIApplication sharedApplication] endBackgroundTask:backgroundTaskID]; 
    backgroundTaskID = UIBackgroundTaskInvalid; 
}]; 

来源:

相关问题