2017-01-25 3 views
1

Я делаю приложение для отслеживания GPS. Приложение должно отслеживать местоположение пользователя iPhone. В моем случае это отслеживание, когда приложение находится в фоновом режиме и открыто. если я убиваю свое приложение из-за фона, я не получаю обновление местоположения. Возможно ли это после убийства приложения, приложение должно отслеживать местоположение в iOS (цель c).После убийства приложения с фона приложение должно запускать приложение для отслеживания gps в ios (цель c)

ответ

0

Существует способ получить обновление местоположения, даже когда приложение было убито/прекращено пользователем или iOS.

В прошивке 8 и iOS7

использование [locationManager startMonitoringSignificantLocationChanges] вместо [locationManager startUpdatingLocation] пожалуйста, проверьте этот http://mobileoop.com/getting-location-updates-for-ios-7-and-8-when-the-app-is-killedterminatedsuspended.

Пример проект также мерзавец пожалуйста пройти через это тоже https://github.com/voyage11/GettingLocationWhenSuspended

0

Добавить обновление адресов в capabibities приложений в настройках:

Image : Setting capabilities to Location updates

Затем добавьте описание конфиденциальности политики для использования местоположения, установленное в местоположение всегда описание использования:

Image : Location Always usage description in plist

Наконец, добавьте этот кусок кода в AppDelegate:

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    self.locationManager = [[CLLocationManager alloc]init]; 
     self.locationManager.delegate = self; 
      [self.locationManager requestAlwaysAuthorization]; 
     self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { 
      [self.locationManager startMonitoringSignificantLocationChanges]; 
     } else { 
      [self.locationManager startUpdatingLocation]; 
     } 
return YES; 
} 
(void)applicationWillResignActive:(UIApplication *)application { 
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 
    // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 
    [locationManager stopUpdatingLocation]; 
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
    [locationManager setDistanceFilter:kCLDistanceFilterNone]; 
    locationManager.pausesLocationUpdatesAutomatically = NO; 
    locationManager.activityType = CLActivityTypeAutomotiveNavigation; 
    [locationManager startUpdatingLocation]; 
} 


(void)applicationDidEnterBackground:(UIApplication *)application { 
    [locationManager stopUpdatingLocation]; 

    __block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
     bgTask = UIBackgroundTaskInvalid; 
    }]; 

    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10.0 
                 target:self 
                selector:@selector(startTrackingBg) 
                userInfo:nil 
                repeats:YES]; 


} 
(void)applicationWillTerminate:(UIApplication *)application { 
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 
    // Saves changes in the application's managed object context before the application terminates. 

    __block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
     bgTask = UIBackgroundTaskInvalid; 
     NSLog(@"App terminated"); 
    }]; 
} 

(void)startTrackingBg { 

    [locationManager startUpdatingLocation]; 
    NSLog(@"App is running in background"); 
} 
+0

я получаю, использование необъявленных идентификатора 'SocketManager' в [[SocketManager sharedInstance] SocketDisconnect]; line @syden вы можете объяснить об этом –

+0

мое местоположение не обновляется на сервере после завершения с фона #Syden #Dinesh –

+0

Я отредактировал код, пожалуйста, удалите эту строку [[SocketManager sharedInstance] SocketDisconnect] – Dinesh

Смежные вопросы