是否可以在没有GPS的情况下让iBeacon应用程序正常工作?

时间:2015-02-20 11:26:54

标签: ios objective-c bluetooth gps ibeacon

我一直致力于与iBeacon设备互动的iOS应用。工作流程是下一个: 如果用户在iBeacon附近,则应用程序接收来自互联网的推送通知。 因此,要识别某些iBeacon附近的用户是否需要打开下一个模块:

  • GPS
  • 蓝牙
  • WIFI / 3G
  • 推送通知

问题是如果没有打开GPS模块应用程序就找不到任何iBeacons。它很奇怪,因为iBeacon技术只能使用蓝牙。

如何解决以下问题? 我使用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");
}

2 个答案:

答案 0 :(得分:1)

您不需要GPS即可支持iBeacon,但您确实需要定位服务。

这就是为什么我问你是怎么回事#"关闭GPS",因为我不知道在iOS中你有什么方法可以专门关闭GPS接收器。

当用户在“设置”应用中停用位置服务时,他们并不只是关闭GPS - 正如名称所示,他们正在关闭位置服务。 iOS中的位置服务是指可以定位用户的任何内容,包括GPS,WiFi位置和iBeacon。

答案 1 :(得分:0)

不,没有GPS,iBeacon将无法正常工作。 CLLocation Manager是核心位置框架中的一个类。没有GPS,CLocation Manager的代表不会被触发。在这里,iBeacon在CLocation Manager的帮助下工作。

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

这是在区域中标识iBeacon时触发的委托。如果没有GPS,该代表将无法使用。