2016-05-19 1 views
0

Je suis très nouveau dans le développement d'applications iOS. Je vais utiliser AFNetworking 3.0.Je veux mettre à jour l'emplacement en arrière-plan et l'envoyer au serveur. tandis que l'envoyer au serveur, je veux conditionner: 1) si l'emplacement ne change pas je veux appeler le service sendlocation1 2) si le changement de lieu je veux appeler le service sendlocation2. changement d'emplacement (près d'environ 50 mètres). S'il vous plaît aidez-moi .... i essayé code suivant ---- à viewDidLoad:Comment envoyer périodiquement l'emplacement d'arrière-plan au serveur si l'emplacement change ou n'utilise pas l'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);} 

je vais vérifier, si je reçois la réponse du serveur est Connexion réussie alors envoyer au serveur seul endroit , c'est pourquoi j'utiliser if-else statement.like suivante:

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"); 

et enfin

(void)sendlocation1{ 
} 

(void)sendlocation2{ 
} 

s'il vous plaît aidez-moi ... comment vérifier si changement de lieu ou non? ... que devrais-je écrire si condition et l'envoyer au serveur.

+0

Vous devez formater votre code correctement. Modifier et utiliser le formatage du code (Sélectionnez le code et appuyez sur le bouton {}} – cst1992

+0

où vous avez frappé bro .. –

+0

dans le code ci-dessus, que dois-je écrire si condition par laquelle j'appelle sendlocation1 service .... signifie si changement d'emplacement, je veux appeler sendlocation1 sinon pas sendlocation2 ... s'il vous plaît aidez-moi bro –

Répondre

1

Step-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]; 

étape-2

Chaque 50 mètres changement appareil Cette méthode est appelée:

-(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 méthode est assez bro, son appelé tous les 50 mètres distance –

+0

si l'emplacement change ou ne change pas dans un certain temps (supposons en 5 min ou 10 min) puis aussi je veux appeler web_service .... c'est pourquoi j'écris ce service 2 (sendlocation1 n sendlocation2) ...... comment puis-je faire ce frère? ... s'il vous plaît résoudre mon problème –

+0

@SurajSukale - vérifier la réponse mise à jour bro, j'ai utilisé le concept NSTimer, webservice unique est suffisant –

0

Vous pouvez vérifier le déplacement des 2 coordonnées (coord_A, coord_B) à l'aide de CLLocation.

CLLocationDistance distance = [coord_A distanceFromLocation:coord_B]; 

La distance que vous recevrez sera en mètres. Vous pouvez exécuter vos conditions dans une boucle If-Else avec la distance obtenue.

+0

@ 7vikram7 ... s'il vous plaît pouvez-vous me dire, exactement ce que je vais wright à (coord_A et coord_B) .. s'il vous plaît? –

+0

Ce sont des objets CLLocation. L'un d'eux est l'ancien emplacement de l'utilisateur et l'autre est le nouvel emplacement. Vous obtenez ces objets dans la méthode "locationManager: didUpdateToLocation: fromLocation:". – 7vikram7