我正在進行報警應用。我最近2周遇到了一個問題。我的問題是:我的應用程序正在後臺運行。首次安裝應用程序並設置鬧鐘&關閉應用程序。如果鬧鈴時間超過當前時間3分鐘以上,則表示3分鐘鬧鈴在後臺過程中不響鈴。如果應用程序處於打開狀態,則警報正在工在後臺運行3分鐘後報警不響鈴
這是我的代碼:
self->bgTask = 0;
NSAssert(self->bgTask == UIBackgroundTaskInvalid, nil);
bgTask = [application beginBackgroundTaskWithExpirationHandler:^
{
NSLog(@"beginBackgroundTaskWithExpirat");
dispatch_async(dispatch_get_main_queue(),^
{
NSLog(@"dispatch_async");
[application endBackgroundTask:self->bgTask];
self->bgTask = UIBackgroundTaskInvalid;
});
}];
dispatch_async(dispatch_get_main_queue(),^
{
NSLog(@"dispatch_get_main_queue");
//Start BG Timer
[self Start_Update_Timer];
self->bgTask = UIBackgroundTaskInvalid;
});
// This is my timer for background running ..
-(void) Start_Update_Timer
{
//If timer is already running, stop the timer
if(self.callTimer)
{
[self.callTimer invalidate];
self.callTimer=nil;
}
//call the timer for every one sec
self.callTimer =[NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(update_Alarm_List) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:self.callTimer forMode:NSRunLoopCommonModes];
}
'beginBackgroundTaskWithExpirationHandler:'是不是意味着這一點,是爲了完成一些冗長像上傳圖片到服務器這樣的任務。您無法使用'beginBackgroundTaskWithExpirationHandler:'在後臺保留應用程序。您必須使用'UILocalNotification'作爲警報,否則可能會/會讓您的應用程序被拒絕。 – rckoenes