Bu yapılabilir, ancak güvenilir değildir çünkü işletim sisteminden bir şey göndermesini ister ve isteğinizi kabul veya reddedebilirsiniz. Bu benim (SO yere çalınan) ne olduğunu:
[...] //we get the new location from CLLocationManager somewhere here
BOOL isInBackground = NO;
if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground)
{
isInBackground = YES;
}
if (isInBackground)
{
[self sendBackgroundLocationToServer:newLocation];
}
- (void) sendBackgroundLocationToServer: (CLLocation *) lc
{
UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;
bgTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:2];
[dictionary setObject:[NSNumber numberWithDouble:lc.coordinate.latitude] forKey:@"floLatitude"];
[dictionary setObject:[NSNumber numberWithDouble:lc.coordinate.longitude] forKey:@"floLongitude"];
// send to server with a synchronous request
// AFTER ALL THE UPDATES, close the task
if (bgTask != UIBackgroundTaskInvalid)
{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}
}
Öncelikle, asla denemek ve sabit zamanlarda yerini toplamak . Bu bataryayı boşaltacaktır. Sadece ana konum değişikliklerine giriş yapmaya başlayın ve bunlar ortaya çıkarsa, yeni konumu sunucuya gönderin. Daha doğru bir konuma ihtiyacınız varsa, büyük yer değişikliği gerçekleştiğinde GPS'yi başlatın ve gereksinimleriniz için yeterince doğru konuma sahip olduğunuzda GPS'i durdurun. Ardından verileri sunucuya gönderin. – rckoenes
Yaptığım yol budur, güncelleme konumlarını başlatırım, konum bul, konum güncellemeyi durdur, isteği sunucuya gönder, 5 dakika sonra konum güncellemesini yeniden başlat, konum al, dur, vb. Soru şu: Uygulama arka plan modunda ise isteği göndermek için? Teşekkür ederim. –