iOS-SDK
BrightSDK
概述
智石开发包(BrightSDK)符合苹果的 iBeacon 协议、Google 的 eddystone 协议,提供了扫描 iBeacon、eddystone 协议设备、配置 BrightBeacon 设备参数、模拟 iBeacon 等API。你可以访问智石官网(http://www.brtbeacon.com)了解更多设备信息,或前往我们的开发者社区(http://bbs.brtbeacon.com)交流和找到我们软硬件相关问题。
智石开发包需要手持设备硬件支持蓝牙 4.0 及其以上,并要求系统版本 iOS7 及其以上。附:支持的 iOS 设备列表 iphone4s 及以上、 itouch5 及以上、 iPad3 及以上、 iPad mini。详情见:http://en.wikipedia.org/wiki/List_of_iOS_devices
更新日志
- 3.5.2 默认使用 BeaconConstraints 扫描 iBeacon(2020.10)
- 3.5.1 修复默认值设置(2020.04)
- 3.5.0 修复 IOS13 读取,功率设定(2020.03)
- 3.4.9 修复 brtBeacons 等API(2017.10)
- 3.4.8 分离蓝牙、iBeacon 扫描、区域监听回调 API(2017.9)
- 3.4.7 优化区域监听,请使用 regionHander:(2017.3)
如何集成(任选其一)
一、使用CocoaPods集成
将以下代码添加到您的Pod项目的Podfile文件:
pod 'BrightSDK'
在Podfile文件目录运行命令:(请注意:请先更新您本地的CocoaPods库:pod repo update,然后运行pod install。
pod update
二、使用常规集成
按照以下步骤手动集成:
- 如果您尚未下载SDK,请点击[这里下载](https://github.com/BrightBeacon/BrightBeacon_iOS_SDK),或在GitHub搜索BrightBeacon。
- 将下载的SDK文件解压,将里面的BrightSDK文件夹(包含include文件夹和.a库文件)拖动到工程中
- 在拖动到工程后,会弹出以下对话框,勾选“Copy items into destination group's folder(if needed)”选项,并点击“Finish”按钮。
注意:请务必在上述步骤中选择“Create groups for any added folders”单选按钮组。如果您选择“Create folder references for any added folders”,则项目中将添加一个蓝色的文件夹引用,可能会导致无法找到资源。
- 注意:如果出现头文件无法找到,请转到项目设置中的构建设置,搜索Header Search Paths。将"$(SRCROOT)/../BrightSDK/include"添加到Header Search Paths,并检查实际目录地址。
三、IOS8以上配置定位权限
- 打开Info.plist,添加使用期间WhenInUse定位描述说明:NSLocationWhenInUseUsageDescription,例如:用于扫描iBeacon设备。
- 如果应用需要区域监听功能,使用后台及使用期间定位权限“Always”(包含"WhenInUse"),需添加3项以支持不同iOS版本:NSLocationAlwaysAndWhenInUseUsageDescription、NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription。
如何调用
1、注册APPKEY
- 登录BrightSDK官方网站添加应用并获取APPKEY。如果尚未注册,请点击[这里注册并创建应用以获取APPKEY](http://open.brtbeacon.com)。
#import "BRTBeaconSDK.h"
//如需配置设备,请注册appKey.
[BRTBeaconSDK registerApp:(NSString *)appKey onCompletion:(BRTCompletionBlock)completion];
2、常见的API调用
- 扫描Regions内的所有iBeacon设备(iOS7及以上,需要定位权限,并打开蓝牙,传入扫描UUID)。
通过BRTBeaconRegion扫描iBeacon设备(可扫描到参数proximityUUID、Major、Minor、proximity、accuracy、rssi),建议用于iBeacon定位、签到、区域推送等场景。
regions为BRTBeaconRegion数组(默认使用:E2C56DB5-DFFB-48D2-B060-D0F5A71096E0)
[BRTBeaconSDK startRangingBeaconsInRegions:regions onCompletion:^(NSArray *beacons, BRTBeaconRegion *region, NSError *error){
}];
//停止扫描iBeacons
[BRTBeaconSDK stopRangingBeacons];
- 扫描BrightBeacon蓝牙设备(仅需打开蓝牙,支持配置BrightBeacon设备)。iOS6及以上,蓝牙设备扫描(允许连接配置、获取蓝牙参数如mac地址、电量等功能,无法获取iBeacon的proximityUUID、proximity),建议用于设备连接配置、巡检等场景。如果需要在后台扫描,必须限定扫描的服务,例如180a)。
uuid:
CBUUID数组,(设备广播数据中的服务,例:[[CBUUID alloc] initWithString:@"180a"];留空时能扫描所有服务,但不支持后台扫描。)
[BRTBeaconSDK scanBleServices:(NSArray<CBUUID *> *)services onCompletion:^(NSArray *beacons, BRTBeaconRegion *region, NSError *error){
}];
//停止扫描BrightBeacon
[BRTBeaconSDK stopScan];
- 监听区域方法(iOS7及以上,需要定位权限,并打开蓝牙)
//如果需要在后台监听区域,请在随App启动的类(如:appDelegate的didFinishLaunch方法)中调用regionHandler;handler也必须自行初始化,保证监听到区域时,handler能成功回调区域相关函数。简约使用时,可以直接使用appDelegate类。
[BRTBeaconSDK regionHandler:handler];
- 以下是在前台运行、后台或完全退出程序监听区域的回调函数,请复制需要的回调到handler类
进入区域回调
-(void)beaconManager:(BRTBeaconManager *)manager didEnterRegion:(BRTBeaconRegion *)region{
}
离开区域回调
-(void)beaconManager:(BRTBeaconManager *)manager didExitRegion:(BRTBeaconRegion *)region{
}
屏幕点亮区域检测、requestStateForRegions回调
-(void)beaconManager:(BRTBeaconManager *)manager didDetermineState:(CLRegionState)state forRegion:(BRTBeaconRegion *)region{
}
- 启动监听区域
region:需要监听的区域,支持后台监听(<=20),当进入、离开区域时,APP会后台自启动,你有约10秒处理相关逻辑。在iOS8以上startMonitoringForRegions内会调取系统获取定位权限。你也可以自行控制调用弹窗时机或权限类型。
//ios8以上自行获取权限方式
[[[BRTBeaconSDK Share] brtmanager] requestAlwaysAuthorization];
//监听区域示例
BRTBeaconRegion *region = [[BRTBeaconRegion alloc] initWithProximityUUID:@"这里传人需要监听的iBeacon设备的UUID" identifier:@"区域唯一标识符,会覆盖已有相同id的区域"];
region.notifyOnEntry = YES;//监听进入区域
region.notifyOnExit = YES;//离开区域时回调
region.notifyEntryStateOnDisplay = YES;//是否锁屏唤醒时,监测区域状态
[BRTBeaconSDK startMonitoringForRegions:@[region]];
- 立即监测区域状态
[BRTBeaconSDK requestStateForRegions:@[region]];
- 监听的所有区域;当前活跃的区域
[[[BRTBeaconSDK Share] brtmanager] monitoredRegions];
[[[BRTBeaconSDK Share] brtmanager] rangedRegions];