在IOS 的开发中iBeacon和BLE的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在IOS 的开发中iBeacon和BLE的区别相关的知识,希望对你有一定的参考价值。
参考技术A 在ios中ibeacon是基于地理位置的微定位技术(从这句话中可以得出Introduced in iOS 7, iBeacon is an exciting technology enabling new location awareness possibilities for apps.),虽然借助手机蓝牙进行接收Majro、Minor,但是他们在开发工程中没有任何关系。ibeacon使用苹果提供CoreLocation库,然而在BLE在开发过程中使用CoreBluetooth库。从上面提供的库来看就很清楚了,特别是在IOS8之上的时候如果想使用ibeacon,必须让用户点击是否允许“App使用地理位置”。如果在第一次使用ios app扫描ibeacon的时候没有提示这句话是不可能接收到ibeacon的信号(除非ios 8.0之下)。如果是BLE则的开发过程中之需要提示用户打开蓝牙,并不要求其他的地理位置任何信息。
第一:在ios中所有的数据都是通过API获取的,也就是说在IOS中不会看到蓝牙模块的裸数据(在这里的裸数据就代表蓝牙模块发送的16进制的数据),只能拿到苹果公司提供的极个别的API中的数据。
第二:ble、ibeacon各使用各自的API,他们之间没有任何对应关系。如果想使用ble就不可能获取到ibeacon的major、minor、uuid等信息,如果使用ibeacon,没有办法发起链接请求获取服务。
第三:在ios中ibeacon通信数据只有
这个六个属性,其分别含义是“ proximityUUID major、minor表示ibeacon的uuid,major、minor;proximity就是苹果提供的几个表示距离的属性CLProximityUnknown(没有数据),CLProximityImmediate(十厘米以内),CLProximityNear(一米以内),CLProximityFar(一米以外)”。
“在很多硬件人员的眼中认为,ibeacon和ble没有区别啊,我们都是在同一个模块上面开发的,只是发送的数据格式不一样,ibeacon应该和ble没有区别,ios可以获取数据按照我们给的通信协议进行解析就可以啊。”这个就犯了我刚才所说的一个错误,在ios的开发过程中ibeacon和ble是两个不同的东西,所有的数据都被苹果拦截了,只给开发者特定的api可以调用。虽然从硬件上面来看没有任何区别但是在开发过程中确实两个不同的东西。但是有很多的厂商又想让ble具有ibeacon的类似的功能,比如可以让app获取到major、minor这个又怎么办?让ios的app获取ble的MAC地址等等功能(说明一下,ios是不能直接获取ble的mac地址的)?在这里(只是我个人的意见也是我在工作中得到的一些方法)是我的建议,一般很多ble正在发送发现广播的时候携带了“kCBAdvDataServiceData”信息,可以把ibeacon的major、minor放在kCBAdvDataServiceData的数据区域,然后让app根据协议截取响应的信息。也可以放到其他的信息中,这要看公司的策略。
如果有一款iOSble的巡检App(非ibeacon的App)可以用BLE扫描出ibeacon的信息,他的App肯定不是直接扫描ibeacon,这一点可以从两个方面进行验证第一:是否使用用户的地理位置,第二:拿一个其他厂家的标准ibeacon,(ibeacon的uuid一定不要一样,因为ios在扫描ibeacon的时候一定要指定需要扫描的uuid,换一个uuid
app都不可能扫描到)。通过上面两点可以很好的判定app是巡检ble还是ibeacon。
总结上面所有的观点,如果想使用ios的app巡检ble又能巡检ibeacon,一定要在蓝牙模块的广播数据中做文章。怎么做文章需要各厂商自己权衡。
iPhone用户可以在未打开App情况下(App被用户开启过,并且授权使用蓝牙以及定位,并且蓝牙处于开启状态),收到IBeacon设备(蓝牙外设设备)广播的信息,并短暂的激活该App (约10秒)去执行一些方法。
根据IBeacon设备的发射范围,确定用户当前的状态:进入、持续监听、离开。然后做出不同的响应
蓝牙扫一扫;区域推送;活动现场互动(配对,寻宝等);签到,蓝牙锁(应用内手动签到、开锁或者点亮屏幕即可签到、开锁)。
蓝牙连接打印机
https://www.cnblogs.com/liuxingchen/p/5499610.html
http://liuyanwei.jumppo.com/2015/08/14/ios-BLE-2.html
iOS 中 iBeacon 开发
参考技术A iBeacon 是苹果公司2013年9月发布的移动设备用OS(iOS7)上配备的新功能。其工作方式是,配备有低功耗蓝牙(BLE)通信功能的设备使用BLE技术向周围发送自己特有的 ID,接收到该 ID 的应用软件会根据该 ID 采取一些行动。它采用了基于蓝牙4.0的低功耗蓝牙技术(Bluetooth Low Energy, BLE),主要是用作辅助室内定位的功能.
我们可以用iBeacon可以进行室内定位(车库,商场),智能打卡,提醒(离开某物体的时候,比如离开家)。
iBeacon中有两个角色:
发射者: 一般都是各种硬件
接收者: 一般都是智能终端(手机)
发射者通过BLE 的广告通信通道,以一定时间间隔向外广播数据包(一般是每秒两三次),接收者可以通过终端提供的功能来接收,达到信息的交互.
从iOS开发者的角度看: iBeacon 在 CoreLocation 框架中抽象为CLBeacon类, 该类有6个属性,分别是:
proximityUUID :是一个 NSUUID,用来标识公司。每个公司、组织使用的 iBeacon 应该拥有同样的 proximityUUID。
major :主要值,用来识别一组相关联的 beacon,例如在连锁超市的场景中,每个分店的 beacon 应该拥有同样的 major。
minor :次要值,则用来区分某个特定的 beacon。
proximity :远近范围的,一个枚举值。
accuracy :与iBeacon的距离。
rssi :信号轻度为负值,越接近0信号越强,等于0时无法获取信号强度。
只要进入iBeacon的范围,就能唤醒 App(大约10秒钟),即使在程序被杀掉的情况下。必要时,可以使用UIApplication类的
接收者提供了两种方式来接收iBeacon信号:
Monitoring : 可以用来在设备进入/退出某个地理区域时获得通知, 使用这种方法可以在应用程序的后台运行时检测iBeacon,但是只能同时检测20个region区域,并且不能够推测设备与iBeacon的距离.
Ranging : iOS 7之后提供的 API, 用于确定设备的近似距离iBeacon 技术,可以用来检测某区域内的所有iBeacons,并且可以精度估计发射者与接收者的距离。
iOS 中 iBeacon 是基于地理位置的微定位技术,虽然借助手机蓝牙进行接收Majro、Minor,但是他们在开发工程中没有任何关系。
iBeacon使用苹果提供CoreLocation库,然而在 BLE 在开发过程中使用CoreBluetooth库。从上面提供的库来看就很清楚了,特别是在 iOS8.0 之后的时候如果想使用iBeacon,必须让用户点击是否允许XXapp使用地理位置。如果在第一次使用 iOS App 扫描iBeacon的时候没有提示这句话,是不可能接收到iBeacon的信号(除非iOS 8.0之下)。如果是 BLE 则的开发过程中之需要提示用户打开蓝牙,并不要求其他的地理位置任何信息。
任何支持使用蓝牙低功耗共享数据的 iOS 设备都可以用作 iBeacon。
以上是关于在IOS 的开发中iBeacon和BLE的区别的主要内容,如果未能解决你的问题,请参考以下文章
Cordova:在后台模式下扫描 iBeacons / BLE(iOS 和 Android)
是否可以使用 Poledia/react-native-ble-plx 将 iOS 设备变成 iBeacon?
如何自动连接 CBPeripheral(带有 iBeacon + 蓝牙芯片的 BLE 设备)并且应用程序未运行
iOS 中的 iBeacons - 没有来自实际 BLE 设备的回调,但是当另一个 iOS 设备用作广播器时会调用 didRangeBeacons