2015-06-22 3 views
1

Я делаю программу, которая ищет маяк, я реализовал CLLocationManager и мои приложения работает, за исключением одного пункта. Я вызываю startMonitoringForRegion(), чтобы получить обратный вызов didEnterRegion/didExitRegion. Внутри этой функции я делаю startRangingBeaconsInRegion()/stopRangingBeaconsInRegion(), чтобы получить точную информацию, когда пользователь находится в зоне маяка. Моя проблема довольно проста, если приложение запускается, когда пользователь уже находится в диапазоне маяков, didEnterRegion не вызывается.Beacon/IOS CLLocationManager получить текущий регион

Я ищу функцию, такую ​​как isInRegion(), чтобы при запуске моего приложения я мог сделать startMonitoringForRegion(), а затем isInRegion() и startRangingBeaconsInRegion(), если пользователь уже находится в этом регионе.

Мое текущее обходное решение заключается в вызове startRangingBeaconsInRegion(), когда приложение запускается, а затем в обратном вызове didRangeBeacons, я делаю stopRangingBeaconsInRegion(), если маяк не найден. Я не думаю, что это очень чистый путь, и хотел бы заменить на что-то лучше, если это возможно

Спасибо,

ответ

4

Вы можете использовать locationManager:didDetermineState:forRegion: обратного вызова, который говорит вам, если вы либо Inside, Outside или Unknown.

Вы можете заставить себя, чтобы получить обратный вызов по телефону

locationManager.requestStateForRegion(region) 

, когда приложение запускается.

Подробнее здесь: https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManagerDelegate_Protocol/#//apple_ref/occ/intfm/CLLocationManagerDelegate/locationManager:didDetermineState:forRegion:

+0

Спасибо, именно то, что я искал! – radius

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