这期内容当中小编将会给大家带来有关IBeacon怎么在IOS中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
什么是IBeacon ?
<代码> IBeacon> 代码是苹果公司2013年9月发布的移动设备用OS (iOS7)上配备的新功能。其工作方式是,配备有低功耗蓝牙(bie)通信功能的设备使用<代码>祝福> 代码技术向周围发送自己特有的ID,接收到该ID的应用软件会根据该ID采取一些行动。
<强>从个人的角度看:强> <代码> IBeacon> 代码向四面八方不停地广播信号,就像是往平静的水面上扔了一块石子,泛起层层涟漪(俗称水波),波峰相当于IBeacon的<代码> RSSI> 代码(接受信号强度指示),越靠近中心点的地方波峰越高(RSSI越大),这个波峰的大小(RSSI的值)受到扔石子时用力大小(发射功率)和水质(周围环境因子)的影响,离中心点越远水波越趋向于平静,超过了一定值,水波会消失于无形,也就是说IBeacon向外广播的距离是有范围的,超过了这个范围,将接受不到IBeacon的信号。
<强>从IOS开发者的角度看:强> IBeacon在<代码> CoreLocation> 代码框架中抽象为<代码> CLBeacon> 代码类,该类有6个属性,分别是:
- <李>
<代码> proximityUUID> 代码,是一个<代码> NSUUID> 代码,用来标识公司。每个公司,组织使用的IBeacon应该拥有同样的<代码> proximityUUID> 代码。
李> <李><代码> 代码>,主要值,用来识别一组相关联的灯塔,例如在连锁超市的场景中,每个分店的灯塔应该拥有同样的<代码> 代码>。
李> <李><代码>轻度> 代码,次要值,则用来区分某个特定的明灯。
李> <李><代码>距离> 代码,远近范围的,一个枚举值。
李>typedef NS_ENUM(使用NSInteger, CLProximity), { CLProximityUnknown,//,无效 CLProximityImmediate,//在几厘米内 CLProximityNear,//在几米内 CLProximityFar//超过,10,米以外,不过在测试中超不过10米就是太远了 李}<>
<代码> 代码,准确性与iBeacon的距离。
李> <李><代码> rssi> 代码,信号轻度为负值,越接近0信号越强,等于0时无法获取信号强度。
李><强>提示:强> <代码> proximityUUID> 代码,<代码> 代码>,<代码>小代码>这三个属性组成<代码> iBeacon> 代码的唯一标识符。
只要进入<代码> iBeacon> 代码的范围,就能唤醒应用(大约10秒钟),即使在程序被杀掉的情况下。必要时,可以使用UIApplication <代码> 代码>类的<代码>——(UIBackgroundTaskIdentifier) beginBackgroundTaskWithExpirationHandler:(空白(^)(空白))处理程序;代码>方法,请求更多的后台执行时间。
<强> iBeacon的用途强>:我们可以用<代码> iBeacon> 代码可以进行室内定位(车库,商场),智能打,卡提醒(离开某物体的时候,比如离开家)。
iBeacon与祝福的区别
iOS中iBeacon是基于地理位置的微定位技术,虽然借助手机蓝牙进行接收<代码> Majro 代码>,<代码>? 代码,但是他们在开发工程中没有任何关系。
<代码> iBeacon> 代码使用苹果提供<代码> CoreLocation> 代码库,然而在祝福在开发过程中使用<代码> CoreBluetooth> 代码库。从上面提供的库来看就很清楚了,特别是在iOS8.0之后的时候如果想使用<代码> iBeacon> 代码,必须让用户点击是否允许<代码> XXapp> 代码使用地理位置。如果在第一次使用iOS应用扫描<代码> iBeacon> 代码的时候没有提示这句话,是不可能接收到<代码> iBeacon> 代码的信号(除非iOS 8.0之下)。如果是祝福则的开发过程中之需要提示用户打开蓝牙,并不要求其他的地理位置任何信息。
iBeacon在iOS中的运用
权限请求
在<代码>信息。plist> 代码中添加<代码> NSLocationAlwaysAndWhenInUseUsageDescription 代码>,<代码> NSLocationWhenInUseUsageDescription 代码>,<代码> NSLocationAlwaysUsageDescription> 代码,请求地理位置权限。
开启<代码>背景模式代码>
相关代码
进口<代码> & lt; CoreLocation/CoreLocation.h> 代码>。
初始化<代码> locationManager 代码>和<代码> beaconRegion> 代码。
安康;(CLLocationManager *) locationManager { ,,,if (! _locationManager), { ,,,,,,,_locationManager =, [[CLLocationManager alloc], init); ,,,,,,,_locationManager.delegate =,自我; ,,,} ,,,return _locationManager; } 安康;(CLBeaconRegion *) beaconRegion { ,,,if (! _beaconRegion), { ,,,,,,,_beaconRegion =, [[CLBeaconRegion alloc], initWithProximityUUID: [[NSUUID alloc], initWithUUIDString: Beacon_Device_UUID],标识符:@" test"]; ,,,,,,,_beaconRegion.notifyEntryStateOnDisplay =,是的, ,,,} ,,,return _beaconRegion; }IBeacon怎么在IOS中使用