2014-10-10 3 views
2

Я использую iBeacons, но я столкнулся с небольшой проблемой.CLLocationManager delegate не вызван

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

_locationManager = [[CLLocationManager alloc] init]; 
_locationManager.delegate = self; 
[_locationManager requestAlwaysAuthorization]; 

Однако я ожидал следующий метод делегата называться:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 
    NSLog(@"Auth status changed: %i", status); 
    if(status > 3){ 
     // Check if we have to start monitoring beacons 
     NSLog(@"Do we need to initialise after auth given?"); 
     //[self initialiseLocations]; 
    } 
} 

Я бегу IOS 8.0.2, поэтому не уверен, что это ошибка

+0

Вы установили сильную ссылку на locationManager, что-то вроде '@property (неатомный, сильный) CLLocationManager * locationManager;'? –

+0

Нет, но он был объявлен в файле .h, так что во всем мире. Содержащий класс силен, определенный в appDelegate. Все остальные обратные вызовы работают нормально, только этот. –

ответ

0

This answer может помочь ... он решил это для меня хотя бы. Также this website был хорошим пошатом для этой проблемы.

Похоже, что вы правильно вызываете requestAlwaysAuthorization, но вызываете ли вы startUpdatingLocation в любом месте? Кроме того, дважды проверьте, что в вашем Info.plist у вас есть соответствующий ключ и добавленная стоимость строки (NSLocationAlwaysUsageDescription, так как вы используете requestAlwaysAuthorization).

+0

У меня есть набор, и он отлично работает в противном случае (я использую его для iBeacons, поэтому не нужно начинать startUpdatingLocation, как это для GPS). Вот почему мне нужен обратный вызов, поэтому я могу инициировать запрос для отслеживания маяков. –

+0

О, я никогда не использовал iBeacons, поэтому я не совсем уверен в этом ... Я сделал быстрый поиск, но нашел [этот учебник] (http://ibeaconmodules.us/blogs/news/14279747-tutorial-ibeacon -app-development-with-corelocation-on-apple-ios-7-8), используя их, и заявляет, что они внесли в него изменения для работы с iOS 8, поэтому, возможно, это поможет? –

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