当应用程序处于睡眠模式时,我正在检查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];
}];
有人知道这个问题,请告诉我。
答案 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;
}