iBeacon 介绍

iBeacon 是苹果公司在 iOS7上配备的新功能,可以让附近的手持电子设备检测到一个由一个 iBeacon 信号发射器发出的蓝牙信号.
它采用了基于蓝牙4.0的低功耗蓝牙技术(Bluetooth Low Energy, BLE),主要是用作辅助室内定位的功能.

iBeacon 原理

iBeacon中有两个角色:
发射者: 一般都是各种硬件
接收者: 一般都是智能终端(手机)
发射者通过BLE 的广告通信通道,以一定时间间隔向外广播数据包(一般是每秒两三次),接收者可以通过终端提供的功能来接收,达到信息的交互.
每个信号中至少携带了三个主要信息:UUID, Major, Minor,这三个信号组成了一个 iBeacon 的唯一标识符.

Beacon.png

当 iOS设备接收到 iBeacon 信号时,还会有其他重要信息:
rssi: 信号强度
proximity: 发射者到接收者的距离(不是数值,是个枚举: Unknow, Immediate, Near, Far)
accuracy: 水平精度

距离远时.png

距离近时.png

BLE 发射的是2.4GHz 的信号,任何物理阻碍物都会影响 iBeacon 的信号.

block.png

其实,发射者也就是硬件向四周不停地广播信号,而信号就像是水波一样像四周扩散,越靠近中心点的水波越高也就是 rssi 信号越强,而一旦有东西阻隔,信号就会减弱甚至消失,而且一旦超过一定值,信号就会消失,这说明 iBeacon 的广播范围是有限的.


说完发射者,再来说接收者.
接收者提供了两种方式来接收iBeacon信号:

  • Monitoring: 可以用来在设备进入/退出某个地理区域时获得通知, 使用这种方法可以在应用程序的后台运行时检测iBeacon,但是只能同时检测20个region区域,并且不能够推测设备与iBeacon的距离.
  • Ranging: iOS 7之后提供的 API, 用于确定设备的近似距离iBeacon 技术,可以用来检测某区域内的所有iBeacons,并且可以精度估计发射者与接收者的距离,这个使用如下四中接近状态来表示:

proximity.png

相关 API

终于说到 API, 这个是可能踩坑比较多的地方了.

  • 需要打开 GPS 定位和蓝牙.
  • iBeacon 的 API 是在 CoreLocation, 但iBeacon 必须要打开蓝牙,如果需要判断蓝牙,需要用到 CoreBluetooth 框架.
  • Monitoring和 Ranging 是两种监测方式,可以一起用,但是需要区分业务需求,两种一起用会有小坑.
 self.locationManager = [[CLLocationManager alloc] init];self.locationManager.delegate = self; // 遵循代理if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {// 请求用户授权定位权限[self.locationManager requestAlwaysAuthorization];}

CLBeaconRegion 的创建

CLBeaconRegion *region = [[CLBeaconRegion alloc]initWithProximityUUID:#UUID# identifier: #identifier#];
region.notifyOnExit = YES;
region.notifyOnEntry = YES;
region.notifyEntryStateOnDisplay = YES;

接下来是两种方式监测 iBeacon 方式:

// Monitoring
// 开始检测区域
[self.locationManager startMonitoringForRegion:beaconRegion];
// 停止检测区域
[self.locationManager stopMonitoringForRegion:beaconRegion];
// delegate
- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
// 设备进入该区域时的回调
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
// 设备退出该区域时的回调
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
// 有错误产生时的回调
- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(nullable CLRegion *)region withError:(NSError *)error
// Ranging
// 开始检测区域
[self.locationManager startRangingBeaconsInRegion:beaconRegion];
// 停止检测区域
[self.locationManager stopRangingBeaconsInRegion:beaconRegion];
// delegate
// 检测到区域内的iBeacons的回调函数,包含监测到的所有 iBeacon 的信息
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray<CLBeacon *> *)beacons inRegion:(CLBeaconRegion *)region
// 有错误产生时的回调
- (void)locationManager:(CLLocationManager *)manager rangingBeaconsDidFailForRegion:(CLBeaconRegion *)region withError:(NSError *)error

注意事项(坑点)

  • Monitoring和Ranging最好不要一起用,会莫名其妙出现这样的 log:
[Client] {"msg":"Fence: onClientEventRegionState, invalid state", "regionState":"0"}

google也搜不到why,在后来我关掉Monitoring再也没有出现这个 log.

  • iBeacon 这个功能的 API 是在 CoreLocation 框架, 但是 iBeacon 必须要打开蓝牙,不然会一直失败, 蓝牙又要用到 CoreBluetooth 来监听状态.(....)

iBeacon 介绍相关推荐

  1. 微信ibeacon使用场景步骤总结

    第一部分:创意点的产品功能 1.微信摇一摇ibeacon功能 用户开启蓝牙后,进入微信摇一摇页面,会有TV,PEOPLE.如果有ibeacon蓝牙设备,会出现临时tab"周边",摇 ...

  2. 基础技术篇 8 —— iBeacon技术详解与应用

    iBeacon技术详解与应用 1 名称解释 BLE:Bluetooth Low Energy,蓝牙低功耗技术. iBeacon:一种技术,基于蓝牙4.0的精确定位技术. Beacon:实现iBeaco ...

  3. AndroidBLE--Measuring distance(测量距离)

    iBeacon介绍 iBeacon是苹果在2013年WWDC上推出一项基于蓝牙4.0(Bluetooth LE | BLE | Bluetooth Smart)的精准微定位技术,当你的手持设备靠近一个 ...

  4. iOS - 蓝牙开门智能门锁

    蓝牙的实现原理网上很多 在此就不一一描述了 有需要的可以看以下的文章学习 在ios 的开发中iBeacon和BLE的区别 iBeacon介绍 iOS蓝牙空中升级(固件升级) 本文主要是写实现过程: g ...

  5. ibeacon和微信周边介绍

    关于ibeacon技术的常识, 我们通过国内厂商和微信周边来了解. 四月兄弟的相关常识介绍 微信周边相关介绍 潮LInk相关介绍 更多的就不再介绍了. 可以看微信周边里提及到的购买设备厂商都会有相关技 ...

  6. iBeacon室内定位应用的5大领域介绍

    iBeacon室内定位技术可以将人或物与丰富位置数据信息结合,实现精准的定位.导航.地标等服务.目前室内定位主要应用在哪些领域呢? 一.室内场所位置服务 在大型商超.机场.酒店.博物馆.会展中心等大型 ...

  7. 微信小程序如何检测接收iBeacon信号

    前话 微信小程序开发带着许多坑,最近就遇到了个需求,检测iBeacon来进行地点签到. (╯▔皿▔)╯ 微信小程序对于iBeacon的文档也写的十分精简,只简单介绍了每个接口的作用,这就导致我以为简单 ...

  8. 摇一摇 周边 与 ibeacon

    "周边"即将入驻微信公众平台 "周边"(zb.weixin.qq.com)平台一直以独立页面的方式存在,之前并未与微信公众平台(mp.weixin.qq.com ...

  9. 信驰达微信iBeacon摇一摇周边方案ibeacon蓝牙设备

    苹果传出会采用ibeacon技术后,iBeacon这个词也在中国大热.而微信团队宣布6.1版本推出功能"摇一摇 周边"的新玩法,不再只是摇红包,这个新玩法就是基于iBeacon技术 ...

  10. Android Beacon 开发(IBeacon)

    iBeacon是苹果公司2013年9月发布的移动设备用OS(ios7)上配备的新功能.其主要的工作方式就是:配备有低功耗蓝牙 (BLE)通信功能的设备使用BLE技术向周围发送自己特有的ID. 这个网址 ...

最新文章

  1. Android学习视频
  2. 慎用AXIS2(续)
  3. 英雄联盟祖安服务器位置,LOL“4区版英雄联盟”:城区有2个,郊区有2个,山区有1个...
  4. 新建一个grub软盘镜像
  5. 【二叉树】美团的【天天领现金】活动,不就是 斐波那契 数列么?
  6. 百度云盘不限速下载大文件(2021-11亲测有效)
  7. 根据城市编码提取出省份名和城市名
  8. CodeSmith 7.01破解
  9. 底层驱动 【One Day】gec6818开发板刷屏+secureCRT+tftpd32.334安装教程+SD启动卡教程
  10. python微信头像_Python帮你微信头像任意添加装饰别再@微信官方了
  11. WebView 监听 H5 下载
  12. Unity插件 - MeshEditor(五) 网格顶点动画(变形动画)
  13. LinkSys路由器在线配置及DD-WRT
  14. 测试用例的思路---矿泉水瓶
  15. 武安高中计算机学院那个好,河北邯郸最好的5所高中,邯郸一中排第一无争议,你还知道几所?...
  16. 就差你了,于腾格里沙漠无人之境,不止跨年
  17. 01矩阵最大正方形面积、01矩阵最大矩形面积、直方图最大矩形面积
  18. 故宫珍宝馆完成二期改陈 珍贵红珊瑚盆景揭开面纱
  19. 市场调研-全球与中国化妆品级乙基己基甘油市场现状及未来发展趋势
  20. TakeScreenshotException: Failed to capture a screenshot

热门文章

  1. Python中pass是什么?
  2. 第二本书:疯狂人类进化史20190620
  3. 【MySql】mysql之用户管理
  4. 小新700换主板_算不算诚意之作?——联想小新700笔记本到手拆升级+换系统
  5. hdu 1290 (切西瓜问题)
  6. linux主机做racl,linux学习日记十一 账号管理与ACL权限设置
  7. 新语法之CORRESPONDING
  8. JS中的attribute和property的区别和联系
  9. 牛逼!这个网站可以帮助程序员命名变量和函数!
  10. centos7搭建elastiflow