随着低功耗蓝牙的推出,iBeacon 的使用是越来越广泛了,如:微信的附近摇一摇功能,又或者是当你进入大型商场,一些店铺给你推送通知,VR 场景识别等等,这些表示 iBeacon 已经与我们的生活精密相连了。
简介:
-
概念: iBeacon 是 iOS7 后苹果出的一项新技术,支持蓝牙4.0(或以上)的 iOS 设备,工作方式是低功耗蓝牙(Bluetooth Low Energy),向周围发送自己特有的ID,一个
iBeacon
硬件设备在不做任何处理的情况下一般可使用两三年左右。 -
iBeacon 的形状多种多样,大致如下图。
目前哪些地方有 iBeacon:
- 1、微信摇一摇:使用微信的人应该都知道微信有一个
周边摇一摇
功能, 使用的就是 iBeacon 技术。 很多餐馆都部有 iBeacon 的点,如果你想验证直接监测微信的 iBeaconUUID:FDA50693-A4E2-4FB1-AFCF-C6EB07647825。 - 2、走进某个商场时,忽然手机里推出一个通知,也是使用 iBeacon 技术。
- 3、帝都的地跌站大部分也有微信 UUID 的 iBeacon 发射器,具体是用来做什么的还不是慢清楚。
- 4、iBeacon 还可实现地理围栏、室内定位等功能。
iBeacon 技术
Apple的 CoreLocation.frame
里把iBeacon封装成了一个 CLBeacon
类,CLBeacon
大致有下面几个属性组成:Major
、Minor
、 proximity
、 rssi
、 accuracy
。
开发者如何使用 iBeacopn?:
- 1、用户需要添加
CoreLocation.framework
,App 才具备定位的功能。 - 2、App 开发者需要开启定位功能需要配置:在
Xcode
的info.plist
里面添加NSLocationAlwaysUsageDescription
(允许后台访问位置信息) 或requestWhenInUseAuthorization
(允许使用时访问位置信息) 字段。(iOS7后该添加了该字段应用才会弹出 `是否允许应用访问用户的位置信息)。
创建和注册一个beacon区域
- (void)registerBeaconRegionWithUUID:(NSUUID *)proximityUUID andIdentifier:(NSString *)identifier
{
CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:proximityUUID identifier:identifier];
[manager startMonitoringForRegion:beaconRegion];
}
当接受到 iBeacon 信号时回调 ,beacons 里面装了信号的对象,可能同时出现多个信号。
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
{
}
Note: 苹果iBeacon官方代码例子。
iBeacon 硬件设备条件:
- 用户设备 iOS7 或更新操作系统。
- 用户蓝牙设备4.0或更新。
- 用户蓝牙设备必须开启。
- 用户设备定位服务必须开启,允许应用访问位置信息。
iBeacon 能唤醒应用
- 前提:App 具备上面使用 iBeacon 的功能,并且允许后台访问位置信息。
- 现象:App 能被 iBeacon 信号唤醒,即使 App 已经被用户手动杀死掉了,App 也能被 iBeacon 技术唤醒,并且能执行一系列操作。
- 影响:导致 App 用户在并没有使用
App
的情况下,App
有了长达几个小时的后台使用时长。