【发布时间】:2016-11-08 04:59:58
【问题描述】:
在我的应用中,我需要检查用户所在的国家/地区,然后根据该国家/地区显示警报。在 AppDelegate 文件中,我有 didFinishLaunchingWithOptions:
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
//Here you set the Distance Filter that you need
self.locationManager.distanceFilter = kCLDistanceFilterNone;
// Here you set the Accuracy
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
[self.locationManager startUpdatingLocation];
那么对于代表我有这个。它有效,但警报不断重新出现。我如何让它只运行一次?
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
NSLog(@"Running");
CLLocation *newLocation = [locations lastObject];
CLGeocoder *reverseGeocoder = [[CLGeocoder alloc] init];
[reverseGeocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error)
{
CLPlacemark *myPlacemark = [placemarks objectAtIndex:0];
NSString *countryCode = myPlacemark.ISOcountryCode;
NSString *countryName = myPlacemark.country;
NSLog(@"My country code: %@ and countryName: %@", countryCode, countryName);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([countryName isEqualToString:@"Thailand"]) {
[defaults setBool:NO forKey:@"TestMode"];
[defaults synchronize];
}
else {
[defaults setBool:YES forKey:@"TestMode"];
[defaults synchronize];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Test Mode" message:@"Currently, live distribution is limited to the country of Thailand. You may still use the app in 'Test Mode' to store distribution data on your machine. When your country is added, you will have the option to upload it to our server." delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
}
}];
}
【问题讨论】:
标签: ios objective-c cllocationmanager clgeocoder