2016-05-19 4 views
0

Я очень новичок в разработке приложений для iOS. Я собираюсь использовать AFNetworking 3.0. Я хочу обновить местоположение в фоновом режиме и отправить его на сервер. в то время как отправить его на сервер, я хочу условие: 1) если местоположение не меняется, я хочу позвонить в службу sendlocation1 2) если изменение местоположения я хочу позвонить в службу sendlocation2. изменение местоположения (около 50 метров). Пожалуйста, помогите мне .... я попытался следующий код ---- в ViewDidLoad:Как отправить фоновое местоположение на сервер периодически, если изменение местоположения или нет с использованием AFN 3?

(void)viewDidLoad { 
[super viewDidLoad]; 

locationManager = [[CLLocationManager alloc] init]; 
locationManager.distanceFilter = kCLDistanceFilterNone; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
[locationManager startUpdatingLocation]; 

[locationManager requestAlwaysAuthorization]; 



float Lat = locationManager.location.coordinate.latitude; 
float Long = locationManager.location.coordinate.longitude; 
NSLog(@"Lat : %f Long : %f",Lat,Long);} 

я собираюсь проверить, если я получаю ответ от сервера Войти Успех только тогда отправить местоположение на сервер , вот почему я использую, если-то еще statement.like следующее:

if ([_str isEqualToString:@"Login Success"]) { 

     UIAlertController *Loginalert= [UIAlertController 

              alertControllerWithTitle:@"Login Success" 

              message:@"This app is going to close now" 

              preferredStyle:UIAlertControllerStyleAlert]; 


     UIAlertAction* yesButton = [UIAlertAction 

            actionWithTitle:@"Ok" 

            style:UIAlertActionStyleDefault 

            handler:^(UIAlertAction * action) 

            { 
             if() { 
              [self sendlocation1]; 
             } else { 
              [self sendlocation2]; 
             } 

             [Loginalert dismissViewControllerAnimated:YES completion:nil]; 



            }]; 

     [Loginalert addAction: yesButton]; 




    } else { 

     NSLog(@"Something Wrong"); 

и, наконец,

(void)sendlocation1{ 
} 

(void)sendlocation2{ 
} 

пожалуйста, помогите мне ... как проверить, если изменение местоположения или нет? ... что я должен писать, если условие и отправить его на сервер.

+0

Необходимо правильно отформатировать код. Отредактируйте и используйте форматирование кода (выберите код и нажмите кнопку '{}'.) – cst1992

+0

, где u ударил bro .. –

+0

в приведенном выше коде, что я должен писать, если условие, через которое я вызову sendlocation1 service ...., означает, если изменение местоположения, я хочу позвонить sendlocation1, если нет, тогда sendlocation2 ... пожалуйста, помогите мне bro –

ответ

1

Шаг-1

(void)viewDidLoad { 
[super viewDidLoad]; 

locationManager = [[CLLocationManager alloc] init]; 
//set the amount of metres travelled before location update is made 
[locationManager setDistanceFilter:50]; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
[locationManager startUpdatingLocation]; 

[locationManager requestAlwaysAuthorization]; 

// call the timer with 5 minutes cap using 5 * 60 = 300 
[NSTimer scheduledTimerWithTimeInterval:300.0f target:self selector:@selector(sendlocation1) userInfo:nil repeats:YES]; 

шаг-2

Каждое изменение устройства 50 Meter Этот метод называется:

-(void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 
{ 
    NSLog(@"%f",newLocation.coordinate.latitude); 

    NSLog(@"%f",newLocation.coordinate.longitude); 
    CLLocationDistance meters = [newLocation distanceFromLocation:oldLocation]; 
     if(meters >=50) 
     { 
     // call webservice for location is updated 
     [self sendlocation1]; 
     }else 
     { 
     // call normal method 
     [self webservice_UpdateLocation]; 
     } 
    } 
} 

-(void)webservice_UpdateLocation 
{ 
    if ([_str isEqualToString:@"Login Success"]) { 

     UIAlertController *Loginalert= [UIAlertController 

              alertControllerWithTitle:@"Login Success" 

              message:@"This app is going to close now" 

              preferredStyle:UIAlertControllerStyleAlert]; 


     UIAlertAction* yesButton = [UIAlertAction 

            actionWithTitle:@"Ok" 

            style:UIAlertActionStyleDefault 

            handler:^(UIAlertAction * action) 

            { 



              [self sendlocation2]; 


             [Loginalert dismissViewControllerAnimated:YES completion:nil]; 



            }]; 

     [Loginalert addAction: yesButton]; 




    } else { 

     NSLog(@"Something Wrong"); 
} 
+0

singe method достаточно bro, его называют каждые 50 метров расстояния –

+0

, если местоположение изменяется или не изменяется за какое-то время (предположим через 5 минут или 10 минут), то и я хочу позвонить в web_service .... вот почему я пишу, что 2 сервиса (sendlocation1 n sendlocation2) ...... как я могу сделать этого брата? ... пожалуйста, решите мою проблему. –

+0

@SurajSukale - проверьте обновленный ответ bro, я использовал концепцию NSTimer, достаточно одного веб-сервиса –

0

Вы можете проверить смещение координат (координаты_А, координаты_B) с помощью CLLocation.

CLLocationDistance distance = [coord_A distanceFromLocation:coord_B]; 

Расстояние, которое вы получите, будет в метрах. Вы можете выполнить свои условия в цикле If-Else с полученным расстоянием.

+0

@ 7vikram7 ... пожалуйста, можете ли вы рассказать мне, что именно я буду называть (coord_A и coord_B) .. пожалуйста? –

+0

Это объекты CLLocation. Одним из них является старое местоположение пользователя, а другое - новое место. Вы получаете эти объекты в методе «locationManager: didUpdateToLocation: fromLocation:». – 7vikram7