отправка текущего местоположения на сервер в фоновом режиме, а также в запущенном приложении с использованием AFNetworking 3
Я пытался найти много для этого, но я не получил точный ответ, что я хочу.
мой вопрос
Могу ли я отправить текущее местоположение пользователя на сервер, когда приложение работает, а также в фоновом режиме.
Например: В моем приложении я хочу сохранять текущее местоположение пользователя каждые 2 минуты, а затем отправлять его текущее местоположение на сервер. А также, если пользователь перемещается на 50 метров менее чем за 2 минуты, то также. Как я могу это сделать ? Могу ли я отправлять обновления местоположения на сервер в фоновом режиме, а также в режиме переднего плана? если да то как?
Я попытался, как следующим образом:
self.locations = [[NSMutableArray alloc] init];
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.distanceFilter = 10;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.delegate = self;
[self.locationManager requestAlwaysAuthorization];
[self.locationManager startUpdatingLocation];
...
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
// Add another annotation to the map.
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
annotation.coordinate = newLocation.coordinate;
[self.map addAnnotation:annotation];
// Also add to our map so we can remove old values later
[self.locations addObject:annotation];
// Remove values if the array is too big
while (self.locations.count > 1)
{
annotation = [self.locations objectAtIndex:0];
[self.locations removeObjectAtIndex:0];
// Also remove from the map
[self.map removeAnnotation:annotation];
}
if (UIApplication.sharedApplication.applicationState == UIApplicationStateActive)
{
// determine the region the points span so we can update our map's zoom.
double maxLat = -91;
double minLat = 91;
double maxLon = -181;
double minLon = 181;
for (MKPointAnnotation *annotation in self.locations)
{
CLLocationCoordinate2D coordinate = annotation.coordinate;
if (coordinate.latitude > maxLat)
maxLat = coordinate.latitude;
if (coordinate.latitude < minLat)
minLat = coordinate.latitude;
if (coordinate.longitude > maxLon)
maxLon = coordinate.longitude;
if (coordinate.longitude < minLon)
minLon = coordinate.longitude;
}
MKCoordinateRegion region;
region.span.latitudeDelta = (maxLat + 90) - (minLat + 90);
region.span.longitudeDelta = (maxLon + 180) - (minLon + 180);
_latitude1=[NSString stringWithFormat:@"Latitude:%f",newLocation.coordinate.latitude];
_longitude1=[NSString stringWithFormat:@"Longitude:%f",newLocation.coordinate.longitude];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.fetchtokenString1 = [NSString stringWithString:_latitude1];
appDelegate.fetchedriveridString1 = [NSString stringWithString:_longitude1];
NSLog(@"%@",_latitude1);
NSLog(@"%@",_longitude1);
// the center point is the average of the max and mins
region.center.latitude = minLat + region.span.latitudeDelta / 2;
region.center.longitude = minLon + region.span.longitudeDelta / 2;
// Set the region of the map.
[self.map setRegion:region animated:YES];
}
else
{
NSLog(@"App is backgrounded. New location is %@", newLocation);
}
Заранее спасибо..