1

iBeacons

 2 years ago
source link: https://ooso.net/archives/668
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

iBeacons是iOS7的新增的功能,可用于室内近场定位。iOS设备可以检测到附近的iBeacons兼容设备,在当前版本中甚至可以在应用后台运行的情况下获得回调。

iBeacons设备往往都是低功耗的,用Bluetooth Low Energy低功耗蓝牙实现,设计良好的iBeacons设备在一节CR2032纽扣电池支持下应能支持一年以上的使用时间。

iBeacons还有一个有用的特性是可以距离感应,当你的iOS设备检测到了一个iBeacons设备,那么app即可通过CoreLocation监测设备的距离,通过回调的形式通知距离变化。

i

常见应用场景

可以有不少有趣的应用场景,随便列举一些。

  • 商场购物时,靠近某些商品时,提示用户正在打折,或者查看商品的具体信息以及评价。靠近交费区域时,使用某一信用卡支付可以获得优惠。
  • 室内导航,例如机场登机口指示
  • 各种大会入场checkin,免去繁琐的签到流程
  • 各种展览场所,当用户靠近某些展品时,就可以获得相应的介绍信息

什么时候应该使用iBeacons

  • 同时需要检测多个区域
  • 被检测区域可以是一个移动的区域,例如汽车,列车。。
  • 检测区域范围有限的情况(一般不会大于100m)
  • 每个区域需要一些标识做区分的情况
  • 每个区域可以在室内,同一建筑物内,可以有重合
  • 用户愿意开启低功耗蓝牙来检测区域

如何把iOS设备变成一个iBeacon

所有支持低功耗蓝牙技术的iOS设备都可以变成一个iBeacon设备,被其它iOS设备检测到。例如iPhone 4s, iPod Touch5, iPad3及之后的设备,都支持低功耗蓝牙技术。

定义你的iBeacon

首先需要了解4个属性

  • proximity UUID , 是一个iBeacon或一组iBeacons设备的唯一标识,标明它的类型,你可以用osx下的 uuidgen
    命令生成
  • 一个内部identifier ,你在app中自定义的标识
  • 一个 major identifier, 可用于区分一组拥有相同proximity UUID的设备
  • 一个 minor identifier, 可用于区分一组拥有相同proximity UUID和相同major identifier的设备

创建并广播一个iBeacon区域

首先需要定义一个CLBeaconRegion来实现iBeacon,如下

NSUUID *myProximityUUID = [[NSUUID alloc]
    initWithUUIDString:@"566C5595-6EC7-4F08-909F-C954BDCA6CD3"];
NSNumber *branchNumber = @42;
NSNumber *tillNumber = @3;
CLBeaconRegion *region = [[CLBeaconRegion alloc]
    initWithProximityUUID:myProximityUUID
    major:[branchNumber unsignedShortValue]
    minor:[tillNumber unsignedShortValue]
    identifier:@"com.mycompany.store"];

然后把这些信息交由CBPeripheralManager进行广播


NSDictionary *peripheralData =
    [region peripheralDataWithMeasuredPower:nil];
CBPeripheralManager *myPeripheralManager =
    [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];
[myPeripheralManager startAdvertising:peripheralData];

于是一个iOS设备就变成了一个iBeacon了

兼容的iBeacon设备

目前Apple并未公布iBeacons的具体技术细节,但是仍然有不少第三方通过蓝牙嗅探工具反向工程实现了iBeacons兼容设备。在国外已经有一些成品上市,例如

  • estimote
  • sticknfind
  • paypal,它甚至将iBeacons融入了它的支付技术

本人也利用TI公司的CC2541实现了一个简单的iBeacons兼容模块,为了未来可能的变化,做了预留的空中升级接口,现在某宝尝试性的对外出售,适用于有一定电子技术动手能力的爱好者测试。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK