Dans mon application iOS, j'ai activé les services de localisation en arrière-plan et toujours activé. J'ai également configuré la surveillance de la région tous les 500 mètres, donc si iOS tue mon application en arrière-plan, elle se réveillera en utilisant la surveillance de la région. Mais j'ai trouvé un problème majeur dans la mise à jour de l'emplacement. J'ai désactivé les services de localisation d'iOS et je les ai réactivés, mon application est toujours en arrière-plan mais son icône de localisation indique désactiver et une autre application qui n'est même pas en arrière-plan montre l'activation. Veuillez voir la capture d'écran ci-jointe. Si quelqu'un sait à ce sujet, veuillez me guider.

enter image description here

1
Amrit Trivedi 22 juil. 2017 à 09:19

2 réponses

Meilleure réponse

Je pense que vous avez un concept erroné, la flèche non remplie signifie que l'application utilise des barrières géographiques, si vous faites défiler vers le bas de cette liste, vous pouvez lire la légende comme vous pouvez le voir dans cette capture d'écran

enter image description here

J'espère que cela vous aide

1
Reinier Melian 22 juil. 2017 à 06:44
In app delegate.m,

- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
{

    [self setUpLocationManager];
 return YES;
}
#pragma mark - CLLocationManager Delegate
-(void)setUpLocationManager
{
    LocationManager=[[CLLocationManager alloc]init];
    LocationManager.delegate=self;
    LocationManager.desiredAccuracy=kCLLocationAccuracyBest;
    [LocationManager requestWhenInUseAuthorization];

    [LocationManager startUpdatingLocation];
}

-(void)locationManager:(CLLocationManager )manager didUpdateLocations:(NSArray<CLLocation > *)locations
{
    CLGeocoder *GioCoder=[[CLGeocoder alloc]init];

    [GioCoder reverseGeocodeLocation:LocationManager.location completionHandler:^(NSArray<CLPlacemark >  Nullable placemarks, NSError * Nullable error)
    {
        if (error !=nil)
        {

        }
        else
        {
            CLPlacemark *place=[placemarks lastObject];

            NSLog(@"%@",place);

            NSString *Path=[[NSBundle mainBundle]pathForResource:@"countries" ofType:@"json"];
            NSError *Error;
            NSData *JsonData=[[NSData alloc]initWithContentsOfFile:Path options:NSDataReadingMappedAlways error:&Error];
            NSMutableArray *DataArray=[[NSMutableArray alloc]init];

            if (Error==nil)
            {
                NSError *err;
                DataArray=[NSJSONSerialization JSONObjectWithData:JsonData options:NSJSONReadingMutableContainers error:&err];
            }

            for (int i=0; i<DataArray.count;i++)
            {
                if ([[[DataArray objectAtIndex:i]valueForKey:@"code"] isEqualToString:place.ISOcountryCode])
                {
                   // Insert your code here

                    [LocationManager stopUpdatingLocation];
                    break;
                }
            }
        }
    }];
}

-(void)locationManager:(CLLocationManager )manager didFailWithError:(NSError )error
{
    if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted)
    {
        NSLog(@"Location not enabled in your device");
    }
    else
    {


    }
}
0
Dipesh Khandhar 22 juil. 2017 à 08:00