У меня есть приложение, которое прекрасно работало до того, как Apple настояла, чтобы пользователям был предоставлен выбор между «Всегда» и «При использовании» для Location Manager.Приложение использовало iBeacons для отправки приглашений играть в игры и принимать.
Когда выбрано «Всегда», маяки работают нормально, но когда я переключаюсь на «Когда используется», они вообще не работают.Я начал с «Всегда», но изменил следующий код, чтобы предоставить пользователям выбор.В листе приложения я добавил «Конфиденциальность-расположение всегда и описание использования при использовании» и «Конфиденциальность-местоположение при использовании описание использования» и удалил «Описание использования конфиденциальности-расположение всегда».
В приложении «Делегат I»иметь это
- (void)locationManager:(CLLocationManager *)manager
didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedAlways){
NSLog(@"Always");
AlertView2 = [[UIAlertView alloc] initWithTitle:@"Dual player on two devices is enabled."
message:@"To save battery power go to Settings/Privacy/Location Services and choose \"Never\" when not using I'M GAME. Two people can still play on one device when in \"Never\" mode. To recieve invitations to play only when the app is open select \"When In Use\"."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[AlertView2 show];
[[NSUserDefaults standardUserDefaults] setObject:@"YES" forKey:@"accessKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedWhenInUse){
NSLog(@"WhenInUse");
AlertView2 = [[UIAlertView alloc] initWithTitle:@"Dual player on two devices is enabled."
message:@"To save battery power go to Settings/Privacy/Location Services and choose \"Never\" when not using I'M GAME. Two people can still play on one device when in \"Never\" mode. To recieve invitations to play while app is in background select \"Always\"."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[AlertView2 show];
[[NSUserDefaults standardUserDefaults] setObject:@"YES" forKey:@"accessKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusRestricted){
NSLog(@"restricted");
}
if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusDenied){
NSLog(@"denied");
AlertView2 = [[UIAlertView alloc] initWithTitle:@"Dual player on a single device Only."
message:@"To play on two devices go to Settings Privacy/Location Services and choose \"Always\" or \"When In Use\" for I'M GAME. In \"Always\" you can recieve invites while app is in background, in \"When In Use\" invites only appear when the app is on screen. To preserve battery choose \"Never\" when not using I'M GAME."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[AlertView2 show];
[[NSUserDefaults standardUserDefaults] setObject:@"YES" forKey:@"accessKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusNotDetermined){
NSLog(@"undetermined2");
[locationManager requestAlwaysAuthorization];
[locationManager requestWhenInUseAuthorization];
}
}
Нужно ли в iBeacon для Privacy-Location установить «Always» для работы?
Так что я только что узнал, что в «Когда используется» вы не можете контролироватьдля области маяка вход или выход только найти его диапазон.Поэтому я думаю, вопрос в том, как бы я использовал диапазон для отправки уведомления своему пользователю.