내 응용 프로그램에서 백그라운드 위치 모드를 사용하려고합니다. 내 plist 파일에서 '위치 업데이트'배경 모드를 활성화했습니다. 앱에 15 초마다 업데이트되는 타이머가 포함되어 있습니다.위치 iOS에서 배경 모드가 작동하지 않습니다.
응용 프로그램이 백그라운드로 이동하는 경우, 내가, 내 타이머를 내가 전 10 분 다시 응용 프로그램을 탐색 할 때 initializeLocationManager는-(void)initializeLocationManager
{
if(!self.locationManager)
self.locationManager = [[CLLocationManager alloc] init];
else
[self.locationManager stopUpdatingLocation];
if ((![CLLocationManager locationServicesEnabled])
|| ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted)
|| ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied))
{
//user has disabled his location
}
else
{
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.distanceFilter = kCLDistanceFilterNone;
[self.locationManager setAllowsBackgroundLocationUpdates:YES];
[self.locationManager startUpdatingLocation];
}
}
아래에 다음과 같은
- (void)applicationDidEnterBackground:(UIApplication *)application {
UIApplication* app = [UIApplication sharedApplication];
self.bgTaskID = [app beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"background task %lu expired", (unsigned long)self.bgTaskID);
[app endBackgroundTask:self.bgTaskID];
self.bgTaskID = UIBackgroundTaskInvalid;
}];
[NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(initializeLocationManager) userInfo:nil repeats:NO];
if(self.timerLocationBackground)
{
[self.timerLocationBackground invalidate];
self.timerLocationBackground = nil;
}
self.timerLocationBackground = [NSTimer scheduledTimerWithTimeInterval:15
target:self
selector:@selector(initializeLocationManager)
userInfo:nil
repeats:YES];}`
를하고있는 중이 야
앱이 일시 중지되는 3 분에 중지됩니다. 앱을 다시 포 그라운드로 돌아
내 코드는 다음과 같습니다 :
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
//
//Remove the baground task
//
if (self.bgTaskID != UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] endBackgroundTask:self.bgTaskID];
self.bgTaskID = UIBackgroundTaskInvalid;
}
[self.locationManager stopUpdatingLocation];
어떤 도움?
self.bgTaskID를 설정 한 코드를 게시 할 수 있습니까? – rjpadula
@rjpadula 업데이트되었으므로 didenterbackground 메서드의 첫 번째 줄이 설정되어 있는지 확인하십시오. –
"백그라운드 작업 % lu가 만료되었습니다"메시지가 표시되는지 확인할 수 있습니까? 백그라운드 작업을 갱신해야 할 가능성이 큽니다. 내 경험상, 3 분은 필요한 때까지 얼마나 걸릴지에 대한 것입니다. – rjpadula