我有一個VoIP應用程序。哪個工作正常。呼叫在前臺和後臺工作。UILocalNotification在後臺10分鐘後不會觸發
以下步驟進行:
UIBackgroundModes =>在Info.plist中
VOIP配置的應用程序的接口,用於網絡電話使用的一個。
之前移動到背景,setKeepAliveTimeout:處理器:被稱爲
配置音頻會話處理過渡到和積極利用。
爲確保iPhone上更好的用戶體驗,使用核心電話框架來調整與基於蜂窩電話呼叫相關的行爲;
爲了確保VoIP應用程序的良好性能,使用系統配置框架來檢測網絡更改並允許應用程序儘可能多地休眠。
現在的事情是,當應用程序在後臺,並有電話打進來,然後UILocalNotification火災理由如下:並且用戶可以看到兩個按鈕通知取消和RECEIVE
- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask: bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_main_queue(), ^{
while ([application backgroundTimeRemaining] > 1.0) {
NSString *friend = [self checkForIncomingChat];
if ([friend length]>0) {
[[UIApplication sharedApplication] cancelAllLocalNotifications];
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif) {
localNotif.alertBody = [NSString stringWithFormat: NSLocalizedString(@"%@", nil), friend];
localNotif.alertAction = NSLocalizedString(@"Receive", nil);
localNotif.soundName = @"alarmsound.caf";
localNotif.applicationIconBadgeNumber = 1;
[application presentLocalNotificationNow:localNotif];
friend = nil;
}
}
sleep(1);
}
[application endBackgroundTask:self->bgTask];
self->bgTask = UIBackgroundTaskInvalid;
});
}
- (NSString *) checkForIncomingChat {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *incall = [prefs objectForKey:@"incall"];
if ([incall length]>0) {
[prefs setObject:@"" forKey:@"incall"];
return incall;
}
return @"";
};
現在的問題是:
按home鍵應用火災UILocalNotification去後臺如有電話進來後10分鐘內。
10分鐘後,如果有任何來電,它會在後臺運行。 UILocalNotification不會觸發,所以用戶不知道任何事情。
發生這種情況是因爲後臺任務在10分鐘後停止。
如何管理它或延長後臺任務以便長時間運行或重新啓動後臺任務。
越來越多的答案我搜索後發現,但沒有長期運行的後臺任務的作品。
請有人幫助我。我從2周開始嘗試。
我有一個類似的問題...我發現我的應用程序禁用「背景..」在設置/後臺應用程序刷新..(iOS7) – TonyMkenu
你如何解決它在以前的版本?我正在使用* iPhone-3gs *,* iPhone-4 *,* iPhone-5 * – Salim