2015-01-19 5 views
-1

Я хочу создать заказ, когда кто-то входит в регион iBeacon на фоне приложения , но у меня есть проблема, когда приложение на фоне.Как работает ibeacon на фоне?

Я знаю, если пользователь откроет «местоположение» и «Bluetooth» и войдет в регион, приложение обнаружит ibeacon. Но после входа в регион пользователь откроет «bluetooth», приложение не сможет получить уведомление о записи (иногда работа) и не может вызвать функцию locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region, поэтому заказ не может быть создан.

У кого-нибудь есть опыт?

ответ

0

Для более реалистичного и точного получения значения состояния bluetooth переопределите его делегат на контроллер. Core bluetooth framework поможет здесь получить желаемую точность.

Добавить <CoreBluetooth/CoreBluetooth.h> рамки в проекте.

Используйте метод

- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral;

проверить Bluetooth включен?

Peripheral Manager State предоставит вам более подробную информацию о периферийном состоянии и связанных с ним делегатах.

Поэтому, когда устройство включается, это Bluetooth, над вызовом метода делегата.

И здесь вы можете вручную начать проверку обновлений региона.

Для Exmaple:

_locationManager = [[CLLocationManager alloc] init]; 
[_locationManager setDelegate:self]; 

_beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:<Identifier>]; 


- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral { 

    if (peripheral.state == CBPeripheralStateConnected) { 
     [self.locationManager startRangingBeaconsInRegion:self.beaconRegion]; 
    } 
} 

Метод startRangingBeaconsInRegion вызывается метод:

- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region; 
+0

Спасибо your.Just теперь я пытался сделать это. При запуске на переднем плане функция (bluetooth deleggate) вызывается, но на фоне не работает. Затем я изменяю фоновый режим, чтобы «приложение обменивалось данными с помощью CoreBluetooth», оно все еще не работает. – user2020125

+0

Посмотрите на это для задачи фона bluetooth - https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/plist/info/UIBackgroundModes – Kampai

+0

Спасибо! Все хорошо! – user2020125

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