在ios 7.1和ios 8.0中运行时,应用程序在睡眠模式下崩溃

时间:2014-10-30 12:04:56

标签: objective-c crash ios8 voip pjsip

当应用程序处于睡眠模式时,我正在检查xcode中的日志。我正在使用基于voip的应用程序。我已经完成了关于voip的所有手续。我可以将应用程序保持在睡眠模式超过20分钟。但是在我从系统断开设备后,我已经在睡眠模式下运行了应用程序。在3-4分钟内,应用程序崩溃。我已检查设备日志崩溃。 它显示为

  

< BKProcessAssertion:0x1463ab50> id:xxx-xxx-xx ... name:叫   SwyxOTT,来自 - [application enterIntoBackgroundState]进程:   < BKNewProcess:0x14529680; com.aahlaad.SwyxiOSClient; pid:289>   allowedBackgroundDuration:180.000000 reason:finishTask owner   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];

                }];

有人知道这个问题,请告诉我。

2 个答案:

答案 0 :(得分:2)

此次崩溃是调用-beginBackgroundTaskWithExpirationHandler:而没有匹配-endBackgroundTask:的结果。至少,您应该在到期处理程序中结束后台任务,如下所示:

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

来源:

答案 1 :(得分:-1)

试试这个。

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