2015-02-20 2 views
0

Я работаю над iOS-приложением, которое взаимодействует с устройствами iBeacon. Рабочий процесс следующий: , если пользователь находится рядом с iBeacon, а затем приложение получает push-уведомление из Интернета. Таким образом, для признания, если пользователь рядом с какой-то IBeacon должен быть включен следующих модулей:Возможно ли разрешить работу приложения iBeacon без GPS?

  • GPS
  • Bluetooth
  • WiFi/3G
  • толчок уведомление

Вопрос заключается в том, что без включенное приложение GPS-модуля не может найти iBeacons. Странно, так как технология iBeacon работает только с bluetooth.

Как решить следующую проблему? Я использую Xcode 6.1.1, iOS 8, CoreLocation и CoreBluetooth.

Вот код, как я реализовал:

if ([CLLocationManager locationServicesEnabled]) { 

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

    if([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { 

     [_locationManager requestAlwaysAuthorization]; 
    } 

    NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:@"12345678-1234-1234-1234-123456789012"]; 
    NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier]; 

    CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid 
                     identifier:bundleIdentifier]; 
    [_locationManager startMonitoringForRegion:beaconRegion]; 
    [_locationManager startRangingBeaconsInRegion:beaconRegion]; 
} 
else { 

    NSLog(@"location service is disabled"); 
} 
+0

Когда вы говорите «без модуля GPS включен», что вы имеете в виду? Как вы отключите GPS? – Paulw11

+0

У вас такая же проблема с iOS7 ?. Если нет, проблема вызвана отсутствием двух вещей: вставьте ключ в Info.plist и попросите разрешения. Я не думаю, что вам нужен GPS, чтобы использовать iBeacon. –

+0

http://blog.estimote.com/post/97824495825/ios-8-pushes-location-context-to-a-new-level-lock –

ответ

0

Нет, без GPS, IBeacon не будет работать должным образом. CLLocation Manager - это класс в базовой структуре размещения. Делегаты CLocation Manager не будут запускаться без GPS. Здесь iBeacon работает с помощью CLocation Manager.

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region; 

Это делегат, который запускается, когда iBeacon идентифицируется в регионе. Этот делегат не будет работать без GPS.

1

Вам не нужен GPS для работы iBeacon, но вам нужны службы определения местоположения.

Вот почему я спросил, как вы «выключили GPS», поскольку я не знаю ни о каком способе в iOS, что вы можете отключить GPS-приемник.

Когда пользователь отключает службы определения местоположения в приложении «Настройки», они не просто отключают GPS - как говорится в названии, они отключают службы определения местоположения. Службы определения местоположения в iOS относятся ко всему, что может найти пользователя, включая GPS, местоположение WiFi и iBeacon.

+0

Это абсолютно правильно. Кроме того, убедитесь, что у вас есть ключ NSLocationWhenInUseUsageDescription в Info.plist вашего приложения, иначе пользователь не получит запрос на разрешение на доступ. – davidgyoung

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