Отправляйте данные каждые 10 минут - PullRequest
3 голосов
/ 04 ноября 2010
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    




// Override point for customization after application launch.

locmanager = [[CLLocationManager alloc] init]; 
[locmanager setDelegate:self]; 
[locmanager setDesiredAccuracy:kCLLocationAccuracyHundredMeters];
//[locmanager setDistanceFilter:10];
updateTimer = [NSTimer timerWithTimeInterval:600 target:self selector:@selector(startUpdating) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:updateTimer forMode:NSDefaultRunLoopMode];

[window makeKeyAndVisible];

return YES;
}

 -(void)startUpdating
{
[locmanager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
       if (newLocation.horizontalAccuracy < 0) return;


  CLLocationCoordinate2D loc = [newLocation coordinate];
 currentdate=[[NSDate date]timeIntervalSince1970];
   latitude = [NSString stringWithFormat: @"%f", loc.latitude];
 longitude= [NSString stringWithFormat: @"%f", loc.longitude];
//Call to webservice to send data
}

Я хочу отправлять координаты в веб-службу каждые 10 минут. Попытался сделать это, но это не работает. Мое приложение зарегистрировано, чтобы получать обновления местоположения в фоновом режиме. *

Ответы [ 2 ]

5 голосов
/ 04 ноября 2010

Я сделал нечто похожее на это, используя NSUserDefaults для записи даты и времени, когда он последний раз отправлял на сервер, и используя NSTimeInterval для сравнения между датой обновленного местоположения и этим значением.Я использую 30-е годы, но вы можете настроить вверх.Это немного взломано, но работает с фоновым запуском и т. Д.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation   *)newLocation
       fromLocation:(CLLocation *)oldLocation
}

    updatedLocation = [newLocation retain];
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSDate *myDate = (NSDate *)[prefs objectForKey:@"myDateKey"];

    NSDate *lastDate = (NSDate *)newLocation.timestamp;
    NSTimeInterval theDiff = [lastDate timeIntervalSinceDate:myDate];

    if (theDiff > 30.0f || myDate == nil){
             //do your webservices stuff here
            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
            [prefs setObject:lastDate forKey:@"myDateKey"];
            [prefs synchronize];

    }
0 голосов
/ 04 ноября 2010

Вам необходимо прекратить обновление в вашем менеджере местоположений. Он будет продолжать вызывать didUpdateToLocation, если вы не остановите его после первого возврата.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{
[manager stopUpdatingLocation];
etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...