2015-01-12 6 views
0

Я использую Apple AirLocate демо-приложение для создания iBeacon.iBeacon: настройки идентификатора CLBeaconRegion?

  • Идентификатор: com.example.apple-samplecode.AirLocate
  • UUID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0
  • Кафедра: 0
  • Minor: 0
  • Измеренная мощность: - 59

Сигнал успешно Поднял детектор маяков Android Приложение.

Однако, когда я использую следующие коды для обнаружения IBeacon в прошивке 8, маяк не показывает вверх:

self.coreLocation = [[CLLocationManager alloc] init]; 
_coreLocation.delegate = self; 
NSString *identifier = [NSString stringWithFormat:@"com.example.apple-samplecode.AirLocate.%@", @"E2C56DB5-DFFB-48D2-B060-D0F5A71096E0"]; 
CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:identifier]; 
if(region) { 
    region.notifyOnEntry = YES; 
    region.notifyOnExit = YES; 
    [_coreLocation startMonitoringForRegion:region]; 
} 

Независимо от того, какого значения я использую в поле идентификатора, маяк никогда не найден по CLLocationManager. Его делегаты, didDetermineState: и didRangeBeacons: так и не были вызваны. Однако делегат monitoringDidFailForRegion получил:

Не удалось выполнить операцию. (KCLErrorDomain ошибка 4.)

После посмотрел несколько онлайн документации, код ошибки 4 средства:

Доступ к службе мониторинга области было отказано пользователем.

Но я использую следующие коды, чтобы доказать мое приложение имеет право контролировать регион:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 
    if(status == kCLAuthorizationStatusDenied) { 
     NSLog(@"didChangeAuthorizationStatus: Denied"); 
    } else if(status == kCLAuthorizationStatusNotDetermined) { 
     NSLog(@"didChangeAuthorizationStatus: Not Determined"); 
    } else if(status == kCLAuthorizationStatusAuthorizedAlways) { 
     NSLog(@"didChangeAuthorizationStatus: Authorized Always"); 
    } else if(status == kCLAuthorizationStatusAuthorizedWhenInUse) { 
     NSLog(@"didChangeAuthorizationStatus: Authorized When In Use"); 
    } else if(status == kCLAuthorizationStatusRestricted) { 
     NSLog(@"didChangeAuthorizationStatus: Restricted"); 
    } else { 
     NSLog(@"didChangeAuthorizationStatus: Unknown"); 
    } 
} 

и возвращает:

didChangeAuthorizationStatus: Авторизованный Когда в использовании

Учитывая, что:

  • Я использую iPhone 5s с iOS 8.1.2
  • Я добавил NSLocationWhenInUseUsageDescription в Info.plist
  • В странице Capabilities, я включил «обновления Адрес» и «использует Bluetooth LE принадлежности» (Xcode добавлены соответствующие записи в Info.plist)
  • Запрошенные «Когда используется» Авторизация через [self.coreLocation requestWhenInUseAuthorization]
  • Allowed «Место службы» и «Push Notification» во время первого запуска приложения
  • режим полета выключен
  • Bluetooth включен
  • Wi-Fi включен, подключен к Интернету
  • Настройки> Общие> История App обновления включена
  • Настройки> Конфиденциальность> Местоположение Услуги> My App> при использовании (клещ)
  • [CLLocationManager isMonitoringAvailableForClass:[CLRegion class]] возвращает YES

Что я пропустил, чтобы вызвать эту ошибку 4? Кроме того, необходимо ли идентификатор соответствовать идентификатору Bundle iBeacon (почему Android может обнаруживать все маяки, но iOS нужно указывать идентификаторы)?

Ссылка: Region Monitoring and iBeacon

+0

Попробуйте добавить [_locationManager startRangingBeaconsInRegion: beaconRegion]; [_locationManager requestStateForRegion: beaconRegion]; И убедитесь, что NSLocationWhenInUseUsageDescription добавлено поврежденно. Ваш код выглядит хорошо – weso

ответ

1

Несколько предложений:

  1. Попробуйте с полки IOS детектора из AppStore, как Locate устранить аппаратные проблемы.

  2. Если это работает, попробуйте удалить и переустановить приложение. Я видел, что разрешение на местоположение закручивается, если код авторизации был добавлен после того, как приложение уже было запущено.

Также может быть полезно опубликовать ваш Info.plist в случае возникновения проблемы.

+1

Перезагрузка устройства разрешила проблему разрешения. Не знаю, почему. – Raptor

Смежные вопросы