저는 VOIP 호출에서 작업 중이며 iOS에 대한 지원을 추가하고 있습니다. 앱이 백그라운드 일 때 수신 VOIP 호출에 대해 UILocalNotification (iOS 10에서는 사용되지 않음)을 사용하고 있습니다. iOS 9 : beginBackgroundTaskWithExpirationHandler가 타임 아웃 전에 호출 중입니다.
내가 1 분 백그라운드 프로세스 시간을 연장이 코드count = 0;
apnTimer = [NSTimer scheduledTimerWithTimeInterval:3.0
target:self
selector:@selector(showIncomingCall:)
userInfo:userInfo
repeats:YES];
self.backgroundTask = [application beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"ALVOIP : BACKGROUND_HANDLER_NO_MORE_TASK_RUNNING.");
[application endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid;
}];
-(void)showIncomingCall:(NSTimer *)timer
{
if (count < 60)
{
UIApplication *application = [UIApplication sharedApplication];
[application presentLocalNotificationNow:localNotification];
NSLog(@"Time Remaining: %f", [[UIApplication sharedApplication] backgroundTimeRemaining]);
count = count + 3;
return;
}
// TIMEOUT : STOP TIMER AND LOCAL NOTIFICATION BACKGROUND TASK
[self invalidateCallNotifying];
}
-(void)invalidateCallNotifying
{
[apnTimer invalidate];
if (self.backgroundTask != UIBackgroundTaskInvalid)
{
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid;
}
}
을 사용하고 전화 60 초 (또는 1 분) 만들려면 그것은 아이폰 OS 10.1.1 (아이폰)에서 일하고 있지만 작동하지 않습니다 iOS 9.3.5 (iPad). 어떻게 든 핸들러가 30-33 초를 호출합니까?
UPDATE :
self.backgroundTask = [application beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"ALVOIP : BACKGROUND_HANDLER_NO_MORE_TASK_RUNNING.");
[application endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid;
}];
아직도 내가 30-33 초이 작동하지 않는 이유를 모르겠어요 즉 할 수 있어요 :
내가이 코드를 언급하려고?
앱이 뷰 컨트롤러에서 아무 것도 변경하지 않을 시간을 연장해야합니다. –
@Abhishek Thapliyal이 메서드 내에서 로직을 사용합니다. – ChenSmile
내 코드에서 어떻게 조정되는지 이해하지 못합니다. 나는 어떤 컨트롤러를 바꿀 필요가 없거나 어떤 호출도 타이머를 호출 할 필요가 없다. –