iBeacon开发基础

原创 2015年11月18日 11:35:07

(迁移自我的qq日志:http://user.qzone.qq.com/511107989/blog/1401877946)

端午放假的时候,张老师@张诚 跟我说起一个词,iBeacon,说来惭愧,虽然一直做蓝牙相关的APP,但在此之前是完全没听过这个概念,虽然iBeacon是Location和Ble的结合体,但也算是直亲了吧,又想起了WWDC2014上新发布的开发语言Swift,突然感觉尝试去学习、掌握所有的东西是一个很笨的,因为更新的太快了,然后智商又比较捉急,按我的智商与学习能力,是永远没法赶上知识更新的脚步的,不知道其他同学有没有记忆力下降的现象,我反正是有了,所以都不得不边写代码,边通过日志的方式来记住刚学的东西了。

     能在闲暇的时候,积累或者扩展一下知识就好了,身体才是最重要滴。
    
    好了,老套路,扯淡完毕,进入正题:

==============================割了吧,反正将很久用不上了=========================================

    Beacon的应用场景是:当你手持一个设备,开启监听基站信号,一旦你进入这个基站的信号范围,你就能处理这个信号;就从这个角度看,这个很简单,就跟我们手机Sim卡信号和WiFi信号处理是一样的,只是SIM卡信号和WiFi信号的处理可能存在一个连接建立的过程,然后iBeacon不同,他是一个广播,那很简单的,我们就可以把它理解成,收音机,然而,这是一个特殊的收音机,不像我们日常用的收音机,你可以调不同频道,收听不同的内容,而iBeacon只能收到特定格式的广播。

    1、基站:一个BLE设备,广播内容;因为是一个BLE设备,因此不论是Android平台还是iOS平台,都可以扫描到这个基站;
                    

    2、手持设备:既然是通过处理BLE设备广播的数据,那自然手持设备就必须含有BLE模块,然而在iOS平台下(iBeacon其实就是iOS专属的,只是Android平台我们也可以做到大概的定位),确实通过了BLE模块和GPS模块结合起来(有没有其他模块以及内部是如何实现就暂不清楚了),来进行确定位置的,因此要使用的话,必须开启定位服务和蓝牙服务;在Android的平台,我们只能简单解析BLE的广播内容了;

好了,软件原理其实就是上面说的这么简单,掌握上面两个概念即可,而且iOS做了很好的集成,根本不需要我们做很多的工作;

现在如果你在iOS平台下做一个基站,广播内容,只需要以下3行关键代码:

CLBeaconRegion *region = [[CLBeaconRegion alloc]initWithProximityUUID:self.beaconRegion.proximityUUID

                                                                    major:value1

                                                                    minor:value2

                                                               identifier:self.beaconRegion.identifier];//根据uuid创建区域,uuid用来识别商场或其他应用场景,major和minor可以用来识别商场里面的不同的基站(beancon)
 

NSDictionary *beaconPeripheralData = [regionperipheralDataWithMeasuredPower:nil];//根据区域来建立广播的内容

   
[self.peripheralManager startAdvertising:beaconPeripheralData]//广播内容


//注:Android手机现在貌似不支持用作周边来广播内容,所以Android的先不写


如果你要做手持设备端软件:

  self.beaconRegion = [[CLBeaconRegion alloc]initWithProximityUUID:proximityUUID identifier:kIdentifier];

    self.beaconRegion.notifyEntryStateOnDisplay = YES;//创建需要监听的区域

[self.locationManager startMonitoringForRegion:self.beaconRegion];//开始监控区域 

 
如果要停止监控,调用:
 
 [self.locationManager stopMonitoringForRegion:self.beaconRegion];


接下来,就是回调函数的事情了: 

- (void)locationManager:(CLLocationManager *)manager

        didRangeBeacons:(NSArray *)beacons

               inRegion:(CLBeaconRegion *)region {


}


- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion*)region

{

}


- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion*)region

{

}


- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region

{

}



其实到目前为止,可能还是没有理解这玩意有多大用处,说来说去我们只是收到了广播的内容,内容还非常有限,那接下来的事情,其实就是解析广播内容,然后搜索本地数据库或者网络中心等,获取内容后,显示给手持设备,
比如我收到的major值为1000,客户端就是给服务器发送这个major参数,服务器根据major值,xml格式或者jason格式返回打折对应产品的打折或者其他信息, 客户端解析,然后显示就ok啦;


Android平台就有点为难了,并没iOS集成的好,Android目前只是解析最表层的ble广播数据:

      在BluetoothAdapter.LeScanCallback()中:
 onLeScan
(final BluetoothDevice device, int rssi, byte[] scanRecord)

解析这个scanRecord数组: 

// 02 01 1a 1a ff 4c 00 02 15  # Apple's fixed iBeacon advertising prefix  0215代表着iBeacon设备
// e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 # iBeacon profile uuid
// 00 00 # major值 
// 00 00 # minor 值
// c5 # The 2's complement of the calibrated Tx Power

然后再对应的处理,同iOS。 

  

android IBeacon 开发(一)搜索IBeacon基站

最近公司在搞IBeacon,因为公司另一个学android的走了,而剩下的人中,只有我接触过java、android,所以只有我来做这个了。 声明,我是一个C#的程序员,java、android都是...
  • white__cat
  • white__cat
  • 2015年12月26日 11:20
  • 1936

iBeacon的数据包格式

Ibeacon 是apple开发的基于BLE(Bluetooth low energy)的精确定位技术。常常用来做室内定位。 这里简单讲解下ibeacon的数据包格式 这里以UUID为B9407F...
  • syrchina
  • syrchina
  • 2016年11月01日 11:28
  • 1723

Ibeacon的数据包格式

Ibeacon 是apple开发的基于BLE(Bluetooth low energy)的精确定位技术。常常用来做室内定位。   这里简单讲解下ibeacon的数据包格式   这里以UUID为B9...
  • Hello_Hwc
  • Hello_Hwc
  • 2014年08月19日 20:54
  • 5974

Android iBeacon 开发

iBeacon是苹果公司称为“一种可以检测到附近IOS7设备出现的一种新的低功耗、低成本信号传送器”的一套室内定位系统的商标。 这种技术可以使一个智能手机或其他装置在一个iBeacon基站的感应范围内...
  • u013625961
  • u013625961
  • 2016年12月28日 10:31
  • 1269

#iOS开发笔记#如何接收iBeacon信号并读取其信息

本文重点关注如何在iOS上扫描周围的iBeacon信号并读取信息,包括beacon设备的UUID,Major,Minor和当前距离。...
  • Bryster
  • Bryster
  • 2015年01月10日 18:19
  • 4766

iBeacon距离测量误差有多大

很多朋友问我这个问题,这个问题很关键,其决定了iBeacon到底能用在什么场合。维洛奇电子就和朋 友们分享一下影响iBeacon距离测量误差的主要因素都有哪些。     首先,iBea...
  • kai_1215
  • kai_1215
  • 2015年09月21日 10:47
  • 3788

android IBeacon 开发(二)修改IBeacon参数

开发(一)中,我们介绍了怎么扫描到IBeacon。这节我们去看看怎么修改IBeacon的参数。   IBeacon里的参数,主要有这几个 name:设备名称 major:主参数 minor:...
  • white__cat
  • white__cat
  • 2015年12月26日 11:21
  • 2839

iBeacon技术分析文档

1前言 iBeacon是苹果公司在 iOS 7 中推出的一种近场定位技术,可以感知一个附近的 iBeacon 信标的存在。 当一个iBeacon 兼容设备进入/退出一个iBeacon 信标标识的区域时...
  • pjk1129
  • pjk1129
  • 2016年06月17日 08:37
  • 1855

低功耗蓝牙BLE以及iBeacon的开发笔记

题记:不要放弃自己进步的机会背景公司刚接了一个大项目,其中涉及低功耗蓝牙BLE,使用ibeacon设备来与微信的摇一摇功能互动,达到宣传,以及用户在厅店参加活动的效果. 那么刚好我上一个项目完结,落...
  • phyooos
  • phyooos
  • 2016年07月10日 19:05
  • 1116

基于iBeacon技术的智慧停车解决方案

概述 停车场面积大结构复杂,迷宫一般的停车场,,车主已经不记得自己的车停在哪里了? 基于iBeacon技术的智能停车解决方案能让停车场“长”出很多双眼睛,变得更智能,让车主体验更轻松的服务。 行...
  • dollyluluyin
  • dollyluluyin
  • 2014年12月18日 11:15
  • 2358
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iBeacon开发基础
举报原因:
原因补充:

(最多只允许输入30个字)