多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### iBeacon 软件 - Core Location API 在 iOS 7 之前,核心位置使用由地理位置(经度和纬度)和半径定义的区域,称为“地理围栏”。iBeacon 通过定义具有标识符的区域来实现新的灵活性。这使得信标可以被固定在没有绑定到单一位置的对象上。例如,一个信标设备可以用来在一个移动物体周围设置一个区域,比如一辆食品卡车或一艘游艇。此外,相同的标识符可以被多个设备使用。这将使零售连锁店能够在他们所有的位置使用 iBeacon 设备,并让iOS设备知道什么时候进入其中任何一个。 #### 第1节 隐私和位置 由于 iBeacon 是 Core Location 的一部分,因此需要使用相同的用户授权才能使用。 当应用程序尝试使用 iBeacon API 时,用户将看到相同的位置授权警报: ![](https://box.kancloud.cn/497fce887e9ad2e6f27d981bbff18502_660x316.png) 使用 Core Location 中的 iBeacon API 的应用程序将显示在“设置>隐私>定位服务”目录下,用户可以随时允许或拒绝应用程序对 iBeacon 功能的访问。此外,任何与 iBeacon 关联的蓝牙数据包都将被排除在 CoreBluetooth API 之外。与地理围栏区域监视一样,当处于活动状态时,状态栏将显示空心箭头。 使用测距时,状态栏将显示实心箭头。 #### 第2节 iBeacon 精度 为了确保有效的用户体验,重要的是要考虑如何检测到信号的信号,并使用它来确定准确性。当一个iOS设备探测到信标信号时,它会利用信号的强度(RSSI或接收信号强度信号)来确定信标的远近,以及它对距离的估计的准确性。信号越强,越准确。信号越弱,iOS越不可靠。 通过将其与GPS在iOS平台上的工作方式联系起来,我们可以更好地理解精确度。当一个 iOS 设备可以很清晰地接收 GPS 信号,比如当一个设备在户外的时候,相对在轨道上 GPS 卫星无障碍物遮挡,那么定位就能更准确。这在地图应用程序中很容易看到,位置精度是由你当前位置指示器周围的蓝色圆圈表示的。如果一个装置在室内,或者卫星的视线被阻挡,一个大的蓝色圆圈表示的精确度较低。也就是说,这个设备可以位于蓝圈内的任何地方。随着对卫星的视线的改善(例如,该设备是在室外拍摄的,或者从背包中移走),精确度会得到提高,这是由一个较小的蓝色圆圈所代表的。由于接收到的信号强度更好,该设备可以缩小误差范围,定位更准确。 ![](https://box.kancloud.cn/a32940c2aac9813356391df7684a9c5c_1614x694.png) 从使用 iBeacon 技术的设备接收信号,信号强度通常与设备离信标的距离有关。在理想条件下(即设备的天线和信标之间的畅通无阻的视线),距离越近,结果就越准确。 如图 1 所示,当一个设备远离信标时,信号强度将比接近时低。由于信号强度减弱,iOS 对信标的距离估计精度没有很高的准确度。这类似于上面的 GPS 例子中的蓝色大圆。 ###### 图 1:当设备远离信标时,信号强度会降低,因此精度估计值将会增加。 ![](https://box.kancloud.cn/325008f45c5c3651f5d30342f7b6767f_762x488.png) 随着设备靠近信标,接收到的信号强度增加,因此接近度估计的准确度增加。 这将类似于GPS例子中较小的蓝色圆圈。 如图2所示,靠近信标的设备对其靠近发射信号的信标具有更高的可信度。 ###### 图 2:随着设备靠近信标,信号强度增加,提高准确度。 ![](https://box.kancloud.cn/48ec37079085af1fd043216920d53177_760x488.png) 然而,就像GPS信号强度可以被建筑物影响或放置在背包、钱包或口袋里被削弱一样,灯塔的信号强度也会减弱。信号的衰减,或信号强度的丧失,可能是由许多因素引起的。信标周围的物理材料,如图 3 中所示的设备与信标之间的墙,将影响接收到的信号强度。这可能会使设备相信信标比实际更远。 ###### 图 3:物理物体和材料可以阻挡信号,降低接收信号的强度。 ![](https://box.kancloud.cn/5c5dab8338644b7f52e8555a0c815889_760x488.png) 人体本身就是一个极好的蓝牙信号衰减器。简单来说把你的身体放置在设备和信标之间就会影响信号强度,从而降低准确度。图 4 显示当有人在 iOS 设备和信标之间进行物理定位时,信号强度减弱。 ###### 图 4:人体也可以阻挡信号。 ![](https://box.kancloud.cn/c92adf0a57f247567c7b7652dd492a64_792x506.png) 在构建使用GPS或信标的应用程序时,精度是重要考虑参数的。 Core Location 对象所报告的值( CLLocation 类中的 horizontalAccuracy 属性,或 CLBeacon 类中的精度属性)表明了这种不确定度,或误差范围。两者都以米为单位。值越高,设备或信标位置的确定性越低。要记住,依赖于物理环境的低精度值可能是不可靠的。 #### 第3节 区域监测 类似于现有的地理栅栏区域监视,当设备进入或离开由信标定义的区域时,应用程序可以请求通知。当应用程序使用这个请求开始监视信标区域时,它必须指定 iBeacon 广播的 UUID 。虽然一个应用程序被限制在20个被监视的区域,但通过在多个位置使用单个 UUID,设备可以轻松地同时监视多个物理位置。使用前面表中所示的零售商店示例,设备可以使用相同的 UUID 监控3个不同的物理位置(旧金山,巴黎和伦敦)。与地理围栏相比这种基于 UUID 的方法的影响不敢相信:只需一行代码,应用程序就可以在任意数量的对象或位置周围建立监控区域。 除UUID外,应用程序还可以选择提供 major 和 minor 字段,以进一步指定要监视的信标区域。继续我们的零售连锁示例,如果应用程序仅指定信标区域的 UUID,那么当用户进入或离开任何零售商店时将被通知。由于 major 用于确定特定的商店,如果用户只想在进入特定商店时得到通知,应用程序可以使用UUID +major 来配置信标区域。或者也许用户只有在他们进入该商店中的特定部门时才被通知。在这种情况下,应用程序将使用 UUID + major + minor 值配置信标。这种粒度级别取决于应用程序开发人员,可以在运行时动态指定。 与现有的区域监视一样,当用户进入或退出信标区域时,应用程序将被通知。如果应用程序当前没有运行(例如,如果由于设备上的内存压力而终止了应用程序),则在后台启动应用程序,并发送通知。需要重点关注的一点是在 iOS 7 中,如果用户明确地不允许使用应用后台刷新(全部禁止或专门禁止的的应用程序),那么你的应用程序将不再接收区域监控通知。 但是,它可以继续使用测距 API 。 基于 BLE,可靠监测的范围将在几十米,这提供了比地理栅栏区域监测更准确的监测(通常在100米以上)。如上所述,在室内,地理围栏的准确度往往较低,所以使用 iBeacon 技术可以显着改善室内使用情况下的区域监测结果。然而,信标的物理定位、用户是否在口袋里有设备、或者是在用户前面或后面的信标设备都能影响到一个区域进入或退出的位置,从而影响精度。 #### 第4节 测距 iOS 7 引入了一组新的 API ,用于确定使用 iBeacon 技术的附近的设备,这个过程称为“测距”。基于常见的使用场景,iOS 使用过滤器进行精度估计,以确定离信标的距离。 这个估计值使用以下四个邻近状态之一来表示: | 状态值 | 描述 | | --- | --- | | Immediate | 设备在物理上非常靠近信标。很有可能直接挨着 | | Near | 从设备到信标的视线清晰,这表示接近大约1-3米。正如在精度部分所描述的那样,如果设备和信标之间存在障碍,导致信号衰减,那么即使设备处于这个范围内,也可能无法报告这个接近状态。 | | Far | 该状态表示可以检测到信标设备,但是准确度太低而无法确定 Near 或 Immediate . 需要注意的是 Far 不一定意味着物理上不靠近。如果指示的是“Far”,则依靠精度属性来确定估算距离。 | | Unknown | 信标的距离无法确定。 这可能表明测距刚刚开始,或者测量结果不足以确定状态。 | #### 第5节 iBeacon 用户体验考虑 尽管接近状态和准确度之间存在相关性,但映射不一定是1:1。考虑我们在全国范围内零售商店的例子,信标已经在店内部署。应用程序可能会使用区域监视来检测商店的入口,以触发本地通知,欢迎用户访问商店并邀请他们启动应用程序。为了避免惹恼用户,应用程序可能只想显示这个通知一次,只有第一次用户进入商店。 一旦进入应用程序,可以呈现定制的店内界面。如果包含在 iBeacon 广播中的主要价值代表特定的商店位置,则应用立即知道用户所在的商店。在理想状态下用户使用设备,打开屏幕,打开应用程序,在商店内开始测距所有信标。大型家装商店往往有许多走道和部门。通过将信标固定在每个通道的末端和部门内部,应用程序应该能够使用可以看到的信标的接近状态,应用程序可以在地图上显示用户的大致位置。 在这个例子中的许多情况可能导致接近状态为 Near 或 Immediate(例如,如果用户将他们的iPhone拿到具有信标设备定位的显示设备上);由于物理对象(通常是金属搁架,大体积显示项目等)或商店中的其他客户,应用程序可能只能看到 Far 的估值。在这种情况下,应用程序可能会显示一个界面,突出显示有关附近信标的信息,但不会将用户锁定到特定的信标。相反,应用可能希望让用户选择与他们最相关的项目(或者是由于他们的兴趣,或者是因为他们可以容易地识别哪个信标实际上是最接近的)。 #### 第6节 Passbook 集成 Passbook 通行证也可以利用带有 iBeacon 技术的设备。通过包含信标的 UUID,当它在信标区域时,Passbook 通行证可以被关联。这与在传递的位置数组中指定纬度和经度值的方式相同。可以在传递信标位置的数组中指定UUID 以及(可选)major、minor 值。