내 앱에서 사용자 국가를 확인한 다음이를 기반으로 알림을 표시해야합니다. AppDelegate에 파일에서, 나는 didFinishLaunchingWithOptions에 있습니다iOS는 국가 사용자에 따라 경고를 표시합니다.
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];
그런 다음 대리자에 대한 I이 있습니다. 작동하지만 알림은 계속해서 다시 나타납니다. 어떻게하면 이걸 한 번만 실행할 수 있습니까?
-(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];
}
}];
}
나는 당신의 boolvar = true 코드 라인에 엉망이 될 수 있다고 생각한다. – user717452
경고를 표시하기 전에 bool 변수가 false인지 확인한 후 경고를 표시해야한다. 처음으로 거짓이 될 것이고 사실로 설정하면 다시 경고를 나타내지 않을 것입니다. – User511
맞습니다.이 답변의 코드가 형식을 편집해야한다고 말하면서 간단히 'boolvar = true;'라고 말하면서 boolvar를 설정할 수 없습니다. – user717452