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。 

  

相关文章推荐

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

微信公众号“智物客”致力于和您免费分享物联网、智慧城市相关技术和项目解决方案。本文详细讲解了iBeacon技术和应用,希望能给您带来商业价值启发。...

android蓝牙4.0(BLE)开发之ibeacon初步

  • 2015年03月15日 16:18
  • 1.95MB
  • 下载

AirLocate iBeacon开发示例代码

  • 2014年02月21日 12:18
  • 58KB
  • 下载

开发使用 iBeacon 的 iOS 7 应用

原文地址:https://github.com/nixzhu/dev-blog/blob/master/2014-04-23-ios7-ibeacons-tutorial.md

iBeacon项目实战开发

感谢会员郭亚鑫的热心翻译。原文在这里,如有翻译不当的地方,还请指正。   iBeacons是苹果在WWDC 2013上有意无意透漏出来的一项重要功能,通过低功耗蓝牙(BluetoothLowEne...

Android 开发中 iBeacon的使用

转自:http://blog.csdn.net/jie1991liu/article/details/47403455 iBeacon的工作原理是基于Bluetooth Low Energy...

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

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

Android 开发中 iBeacon的使用

iBeacon的工作原理是基于Bluetooth Low Energy(BLE)低功耗蓝牙传输技术,iBeacon基站不断向四周发送蓝牙信号,当智能设备进入设定区域时,就能够收到信号。只要满足iBea...

Android BLE开发之Android手机搜索iBeacon基站

上次讲了Android手机与BLE终端之间的通信,而最常见的BLE终端应该是苹果公司倡导的iBeacon基站。iBeacon技术基于BLE,它的特点是通过广播对外发送消息,手机不需要连上iBeacon...
  • hellogv
  • hellogv
  • 2014年04月29日 10:59
  • 42621
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iBeacon开发基础
举报原因:
原因补充:

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