Estimote Fleet Management SDK for Apple iOS
如果这个名称看起来不熟悉,请放心,一切正常。在我们发布 4.29.0 版本之后,我们只是更改了命名(https://github.com/Estimote/iOS-Fleet-Management-SDK/releases/tag/4.29.0)
目录
简介
这个 iOS SDK 可以用于一次性更新多个 Estimote 信标的设置。您不再需要分别连接每个信标。相反,您使用 Estimote Cloud 在您的信标上排队“待处理的设置”。然后,您的 iOS 应用(参阅 批量更新器 部分)可以在遇到信标时传播这些设置。这也意味着,一旦您部署了信标,您的应用的用户可以通过简单地围绕信标来传播设置。
在深入之前...
如果您只需更改附近Estimote信标的部分设置(或应用“挂起设置”),请获取Estimote iOS应用。对于单个或少数信标,这将是最快的方法。
如果您有更多Estimote设备,请使用Estimote Deployment应用,它将是一次更好的选择。它使用批量更新来一次性将设置传播到多个信标。
本SDK所有接近监控功能都已弃用,不再受到支持。相反,我们强烈建议您使用由Estimote Monitoring提供支持的Estimote Proximity SDK for iOS。另一方面,应使用此Estimote Fleet Management SDK进行信标群组管理(正如新的命名所建议的,对吧?)。
💡 请注意,Estimote Proximity SDK中的标签和附件会即时更新,无需传播设置到信标。
要了解更多关于群组管理SDK的信息,请查看SDK文档并检查开发者门户教程。还可访问Estimote Cloud API文档。
安装
CocoaPods
CocoaPods是一种添加外部库的简单方法。要使用它检索Estimote Fleet Management SDK
- 将
pod 'EstimoteFleetManagementSDK'
添加到您的Podfile - 运行
pod install --repo-update
- 对于Swift项目:您需要一个桥接头,因此只需添加一个新的Objective-C文件,确认您要创建一个桥接头,然后只需移除不需要的Objective-C文件。在桥接头中,添加:
#import <EstimoteFleetManagementSDK/EstimoteFleetManagementSDK.h>
对于Objective-c项目:在您的代码中添加#import <EstimoteFleetManagementSDK/EstimoteFleetManagementSDK.h>
- 您就可以大显身手了!
手动安装
另外,简单地将其项目中添加单个EstimoteFleetManagementSDK.framework文件以开始您的项目
- 将 EstimoteFleetManagementSDK.framework 文件拖放到您的 Xcode 项目中。它将自动显示在项目导航器中,并将添加到项目设置中的 链接框架和库 部分。
- 这就完成了,恭喜并祝您快乐编码!
需求
- 一个或多个 Estimote Beacon。
- 运行 iOS 10 或更高版本的蓝牙低功耗的 iOS 设备。使用 iOS 模拟器不支持 BLE。
- Estimote 云账户。
车队管理
批量更新器
使用此功能您可以
- 启用或禁用数据包(例如 iBeacon、Eddystone-UID)
- 修改单个信标的设置(例如:增加广播功率,减少广告间隔,修改 Eddystone-URL 的链接)
- 更新 Estimote 信标固件
要对通过 ESTDeviceLocationBeacon 类(例如:定位信标)表示的设备执行批量更新操作,应使用 ESTLocationBeaconBulkUpdater 类。
与 ESTBulkUpdater 不同,它设计成不能作为单例使用。
ESTLocationBeaconBulkUpdater 需要根据 高级 API 部分中描述的 ESTLocationBeaconBulkUpdaterConfiguration 对象数组开始。 ESTLocationBeaconBulkUpdaterConfiguration 由您想要修改设置的设备的标识符以及一个 ESTSettingOperation 的数组组成。所有批量更新事件都将传递给分配为其代理的对象,该对象应遵守 ESTLocationBeaconBulkUpdaterDelegate 协议。
使用示例
我有一组定位信标的标识符,它们应该开启 iBeacon 数据包并设置主值为 200。
NSMutableArray *bulkUpdateConfigurations = [NSMutableArray new];
NSArray *identifiers = @[@"identifier1", @"identifier2", @"identifier3"];
for (NSString *identifier in identifiers) {
ESTSettingIBeaconEnable *enableSetting = [[ESTSettingIBeaconEnable alloc] initWithValue:YES];
ESTBeaconOperationIBeaconEnable *enableOperation = [ESTBeaconOperationIBeaconEnable writeOperationWithSetting:enableSetting completion:^(ESTSettingIBeaconEnable *iBeaconEnableSetting, NSError *error) {
}];
unsigned short major = 200;
ESTSettingIBeaconMajor *majorSetting = [[ESTSettingIBeaconMajor alloc] initWithValue:major];
ESTBeaconOperationIBeaconMajor *majorOperation = [ESTBeaconOperationIBeaconMajor writeOperationWithSetting:majorSetting completion:^(ESTSettingIBeaconMajor *major, NSError *error) {
}];
ESTLocationBeaconBulkUpdateConfiguration *configuration = [[ESTLocationBeaconBulkUpdateConfiguration alloc] initWithDeviceIdentifier:identifier settingsOperations:@[enableOperation, majorOperation]];
[bulkUpdateConfigurations addObject:configuration];
}
[self.bulkUpdater startWithUpdateConfigurations:[NSArray arrayWithArray:bulkUpdateConfigurations]];
配置单个信标
连接到设备
通过连接到Estimote信标,您可以更改其设置(启用/禁用数据包,修改广播功率或广告间隔等)。如果信标设置为部署并受保护 访问模式,则必须是在Estimote云中的信标所有者才能修改任何设置。
尝试连接到未登录您Estimote账户的设备的所有尝试都将失败。启用开发访问模式以允许您的同事也可以编辑信标的设置。
连接数据包由 ESTDeviceConnectable 子类表示,主要一个是 ESTDeviceLocationBeacon。它表示
- Estimote位置信标(硬件版本“F”)
- Estimote邻近信标(硬件版本“G”和“J”)
如果您有Estimote近端标签(贴纸),请使用 ESTDeviceNearable。为了连接到第一代Estimote邻近信标(硬件版本"D"),请使用SDK 3 API。
在此SDK中,连接到设备需要以下步骤
- 创建 ESTDeviceManager,确保您的类符合 ESTDeviceManagerDelegate 协议。
- 通过调用 startDiscoveryWithFilter 开始发现:带有筛选对象。这可以是 ESTDeviceFilterLocationBeacon 或 ESTDeviceFilterNearable。
- 方法 deviceManager:didDiscoverDevices 提供与筛选器匹配的发现设备。
- 确保您的类符合 ESTDeviceConnectableDelegate 协议,并在发现的 ESTDeviceConnectable 对象上调用连接。现在,SDK将验证设备是否与由 AppID + AppToken 对指定的账户链接,授权用户,通过蓝牙级别连接以及通过从云获取它们的值并将其写入设备来同步设置。
设置
在此SDK中,每个设备设置都由一个 ESTSettingBase 子类表示。有两种方式来读取/写入设置- 便利API 和 高级API。
这些类是基本类型(包括原语和对象,例如 无符号整数 或 NSString)的包装器。
- ESTSetting* 类提供值验证的包装器。
- ESTBeaconOperation* 类指定用于读取或写入设置到设备的详细数据。
便利API
要简单改变设备设置,您可以使用便利API树。每个设备有一个,这里是一个 ESTDeviceLocationBeacon 设置树的例子
device
|- settings
|- iBeacon
|- proximityUUID
|- major
|- minor
...
|- estimote
|- enable
|- power
...
|- deviceInfo
|- color
|- name
...
...
要读取/写入设备设置值,请调用树中的一个叶节点上的 readValueWithCompletion 或 writeValue:completion: 方法。
使用示例
我有一个Estimote定位信标,并希望打开iBeacon数据包,将其主要值更改为500,并读取其近程UUID。
[device.settings.iBeacon.enable writeValue:YES completion:^(ESTSettingIBeaconEnable *enableSetting, NSError *error) {
NSLog(@"iBeacon packet enabled");
}];
[device.settings.iBeacon.major writeValue:500 completion:^(ESTSettingIBeaconMajor *majorSetting, NSError *error) {
NSLog(@"Major set to 500");
}];
[device.settings.iBeacon.proximityUUID readValueWithCompletion:^(ESTSettingIBeaconProximityUUID *uuidSetting, NSError *error) {
NSLog(@"Proximity UUID is %@", [uuidSetting getValue]);
}];
高级API
为了加快同时操作多个设置的速度,可以使用高级API。每个设置都有其对应的设置类和操作类。
- 设置类是ESTSettingBase的子类,其命名由ESTSetting + 设置组名称 + 设置简称(例如:ESTSettingIBeaconMajor)拼接而成。它们是设置值的包装器(包括原始类型和对象类型),还提供值验证。
- 操作类是ESTSettingOperation的子类,其命名由ESTBeaconOperation(如果它是存储在设备内存中的设置,如iBeacon主要值)或ESTCloudOperation(如果它是仅存储在云中的设置,如DeviceInfo名称)+ 设置组名称 + 设置简称(例如:ESTBeaconOperationIBeaconMajor 或 ESTCloudOperationDeviceInfoName)拼接而成。
使用示例
我有一个Estimote定位信标,并希望打开iBeacon数据包,将其主要值更改为200,读取其近程UUID,执行许多其他操作,并希望尽可能快地完成这些操作。
ESTSettingIBeaconEnable *enableSetting = [[ESTSettingIBeaconEnable alloc] initWithValue:YES];
ESTBeaconOperationIBeaconEnable *enableOperation = [ESTBeaconOperationIBeaconEnable writeOperationWithSetting:enableSetting completion:^(ESTSettingIBeaconEnable *setting, NSError *error)
NSLog(@"iBeacon packet enabled");
}];
unsigned short major = 200;
ESTSettingIBeaconMajor *majorSetting = [[ESTSettingIBeaconMajor alloc] initWithValue:major];
ESTBeaconOperationIBeaconMajor *majorOperation = [ESTBeaconOperationIBeaconMajor writeOperationWithSetting:majorSetting completion:^(ESTSettingIBeaconMajor *setting, NSError *error) {
NSLog(@"Major set to 200");
}];
ESTBeaconOperationIBeaconProximityUUID *uuidOperation = [ESTBeaconOperationIBeaconProximityUUID readValueWithCompletion:^(ESTSettingIBeaconProximityUUID *setting, NSError *error) {
NSLog(@"Proximity UUID is %@", [uuidSetting getValue]);
}];
...
[device.settings performOperations:enableOperation, majorOperation, uuidOperation, ..., nil];
更新日志
要查看Estimote SDK最近版本的变化,请参阅更新日志。