2014-09-27 74 views
7

我有3可以与应用程序商店中看到的Estimote信标估计应用程序。苹果AirLocation演示应用程序不显示信标

现在我试图运行苹果的演示应用程序AirLocation AirLocate

我在APLDefaults.m文件到默认Estimote UUID _supportedProximityUUIDs = @[[[NSUUID alloc] initWithUUIDString:@"B9407F30-F5F8-466E-AFF9-25556B57FE6D"]];

我已使该区域开始startMonitoringForRegion为改变UUID这stackoverflow说。

但他们没有出现,你见过这个?或者我错过了一些具体的估计。

问候

回答

29

的问题是,AirLocate是为iOS7编写,并在iOS8上,为iBeacons等定位操作权限模型已经改变。为了使程序在从XCode 6编译时在iOS 8上运行,您需要在AppDelegate中添加请求权限的代码。像这样:

if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { 
    [self.locationManager requestAlwaysAuthorization]; 
} 

这将提示用户授权位置操作,包括信标。 您还需要编辑应用程序的info.plist,并添加一个名为NSLocationAlwaysUsageDescription的新字符串键值,其值为“此应用程序需要访问位置服务”,以便操作系统可以提示用户获得此权限。

运行应用程序后,您可以检查设置以查看是否已正确授予此权限。

+1

我发现我也不得不要求用户权限在AppDelegate的通知喜欢这个岗位:http://stackoverflow.com/a/24161903/1735721或你赢了没有像在7中那样获得与消息相同的UI。必须在代码中设置断点才能看到区域通知实际上正在发生。虽然它现在工作在8,但我发现迄今为止它不能很好地工作......只是在很长一段时间内只得到一次区域通知。 – DennisWelu 2014-11-09 04:19:22

+0

还值得注意的是,苹果的例子有不正确的通知键; http://nevan.net/2014/09/core-location-manager-changes-in-ios-8/ – 2015-01-09 11:11:37

2

我在iOS 9中注意到的另一个问题是校准有时不起作用。似乎是一个NSNumber转换问题。在APLCalibrationCalculator.m下面编辑固定它: -

//measuredPower = [[sample valueForKeyPath:@"@avg.rssi"] integerValue]; 
    measuredPower = [[sample valueForKeyPath:@"@avg.rssi"] intValue];