Estimote Proximity SDK - iOS
在您的办公桌上、车内或包裹上贴一个 Estimote 信标,Estimote Proximity SDK 将在您进入或退出其范围时通知您的应用。在室内工作,后台运行,精确度可达几米。
由 Estimote 监控提供支持:Estimote 自己的信号处理技术,注重最大的可靠性。(比我们基准测试的其他基于信标的技术高 3 倍)
其他 Proximity SDK 突出特点包括
- 基于标签的识别:使用可读标签而不是抽象标识符来定义您的邻近区域。
- 每个信标的多个区域:每个单一信标上设置多个进入/退出区域。(例如,“近区域”和“远区域”)
- 软件定义的范围:在代码中定义进入/退出触发范围,而不是靠信标的广播功率。
- 基于云的标签和分组:在不更改应用程序代码的情况下添加、删除和替换信标 - 只需在 Estimote Cloud 中修改标签。
目录
基于标签的识别
Estimote Proximity SDK 使用基于标签的识别来允许动态设置更改。您可以通过标签监控信标,这些标签是在 Estimote Cloud 中分配的。例如,您不必说
"监控信标 123 和信标 456"
而是说
"监控标记为大厅的信标"。
这样,如果您需要替换或添加更多信标到大厅,只需在 Estimote Cloud 中添加/更改标签。下次启动 EPXProximityObserver
时,您的应用程序将拾取新的设置。
重要! 由于我们的 SDK 仍处于 0.x.x 版本,我们根据您的反馈不断修改我们的 API。我们最新的版本已经将我们的 SDK 基于简单的标签,并支持用作可选额外信息的附件。
关键组件
Estimote Proximity SDK 基于以下三个关键组件构建:观察器、区域以及 区域上下文。如果您使用了早期版本的 Proximity SDK,您应该熟悉前两个组件,但对于最后一个组件可能不熟悉。
- 观察器 - 负责为提供的区域列表启动和停止监控,
- 区域 - 一组具有相同 标签 的信标组合的物理空间的表示。
- 区域上下文 - 单个信标及其标签和分配给它的一组附件的组合。
- 动作(回调) - 每个区域都有三种回调,当您进入或退出 区域上下文,或听到的 上下文 数量发生变化时触发。
以下展示了两个区域的示例
blueberry
区域有两个 区域上下文,mint
区域只有一个 区域上下文。
基于标签的区域
安装
Swift 兼容性
从 版本 1.2.0 开始,Proximity SDK 支持 Swift 4.2。
CocoaPods
CocoaPods 是一个方便添加外部库的途径。可以使用它来获取 Proximity SDK
- 在您的 Podfile 中添加
pod 'EstimoteProximitySDK'
- 运行
pod install --repo-update
- 确保 Always Embed Swift Standard Libraries 构建设置设置为 是(默认情况下,此选项在 Objective-C 项目中开启)。Estimote Proximity SDK 内部包含 Swift 代码,需要应用包中的 Swift 标准库。
- 将
import EstimoteProximitySDK
(Swift)或#import <EstimoteProximitySDK/EstimoteProximitySDK.h>
(Objective–C)添加到您的代码中
手册
- 下载 Proximity SDK 仓库
- 点击该仓库中的 Download ZIP 按钮,或
- 运行
git clone [email protected]:Estimote/iOS-SDK-Proximity-SDK.git --depth=1
- 下载蓝牙扫描库仓库
- 点击 蓝牙扫描仓库 中的 Download ZIP 按钮,或
- 运行
git clone [email protected]:Estimote/iOS-Bluetooth-Scanning.git --depth=1
- 将 EstimoteProximitySDK.framework 拖放到您的项目中(在 Options > Copy files if needed 中启用复选框)
- 将 EstimoteBluetoothScanning.framework 拖放到您的项目中(在 Options > Copy files if needed 中启用复选框)
- 将 Estimote Proximity SDK 添加到您的 Xcode 项目的 Build Phases > Embed Frameworks。如果此构建阶段不可见,您可以在 General > Embedded Binaries 部分添加 SDK。
- 将 Estimote Bluetooth Scanning 库添加到您的 Xcode 项目的 Build Phases > Embed Frameworks。如果此构建阶段不可见,您可以在 General > Embedded Binaries 部分添加 SDK。
- 确保 Always Embed Swift Standard Libraries 构建设置设置为 是(默认情况下,此选项在 Objective-C 项目中开启)。Estimote Proximity SDK 内部包含 Swift 代码,需要应用包中的 Swift 标准库。
- 将
import EstimoteProximitySDK
(Swift)或#import <EstimoteProximitySDK/EstimoteProximitySDK.h>
(Objective–C)添加到您的代码中
在您的应用中使用它
库与 Objective–C 和 Swift 兼容。公共类是用 Objective–C 编写的,API 优化用于 Swift。作为动态框架分发。
要求
- 一个或多个启用Estimote监控的ESTIMOTE邻近信标。有关如何启用它的信息,请点击此处。
- 运行iOS 10或更高版本的iOS设备,并具有低能耗蓝牙。
- Estimote Cloud账户。
设置标签
要配置标签
- 请访问https://cloud.estimote.com/#/
- 点击您想配置的信标
- 点击编辑设置按钮
- 点击标签字段,并选择一个标签(如果有可用的话)。
- 您可以在列表底部点击创建新标签并输入一个名称,或者选择一个标签(您想要或已经有多少个都行)。
- 点击保存更改
标签是仅在云端设置——无需通过Estimote应用连接到信标!
分配信标标签
您的应用程序内部
要在您的应用程序中使用SDK,请前往Estimote Cloud中的应用程序部分。注册一个新的应用程序或使用可用模板以获取应用程序ID和应用程序令牌凭据对。在您的应用程序中,使用CloudCredentials
设置凭据。
let credentials = CloudCredentials(appID: "your-app-id", appToken: "your-app-token")
然后,使用ProximityObserver
配置邻近发现。有关标签的更多信息,请参阅本部分或文档。
// Create observer instance
self.proximityObserver = ProximityObserver(credentials: credentials, onError: { error in
print("Oops! \(error)")
})
// Define zones
let blueberryZone = ProximityZone(tag: "blueberry", range: ProximityRange.near)
blueberryZone.onEnter = { zoneContext in
print("Entered near range of tag 'blueberry'. Attachments payload: \(zoneContext.attachments)")
}
blueberryZone.onExit = { zoneContext in
print("Exited near range of tag 'blueberry'. Attachment payload: \(zoneContext.attachments)")
}
blueberryZone.onContextChange = { contexts in
print("Now in range of \(contexts.count) contexts")
}
// ... etc. You can define as many zones as you need.
// Start proximity observation
self.proximityObserver.startObserving([blueberryZone])
(可选)将附加组件添加到信标
虽然区域识别基于标签,但附加组件是一种向信标及其定义的区域添加内容的方法。这就像是一个定制后端,您可以将其添加到指定信标上的任意额外数据。分配给信标的所有附加组件都将在操作回调中返回的EPXproximityZoneContext
对象中可用。有关详细信息,请参阅EPXProximityZone。
要配置附加组件
- 请访问https://cloud.estimote.com/#/
- 点击您想配置的信标
- 点击设置按钮
- 点击信标附加组件字段
- 添加任何您想要的附加键值对
- 点击保存更改
附加组件是仅在云端设置——无需通过Estimote应用连接到信标!
分配信标附加组件
位置和蓝牙权限,后台支持
Proximity SDK需要在后台运行时使用位置服务,这意味着您需要请求用户允许应用程序访问他们的位置。为此,设置位置服务使用说明
- 在您的应用程序的Info.plist文件中添加一个值为隐私 - 总是使用位置的关键摘要的键。当应用程序调用
ProximityObserver.startObserving(...)
时,将向用户显示此消息。它是Core Location工作的必需的。
Proximity SDK使用蓝牙,这意味着您需要请求用户允许应用程序访问蓝牙。为此,设置蓝牙使用说明
- 在您的应用程序的Info.plist文件中添加一个值为隐私 - 总是使用蓝牙的关键摘要的键。
要允许应用程序在接近信标时后台运行,启用蓝牙后台模式
- 在Xcode项目设置中设置使用蓝牙LE配件 -> 功能 -> 后台模式。它是Core Bluetooth在后台工作的必需的。
附加功能
为有限互联网连接的项目缓存数据。
从版本0.13.0开始,ProximityObserver可以存储触发事件所需的数据。这允许在没有互联网接入的情况下执行典型的邻近度观察。为了启用此功能,您只需要在互联网连接可用时至少调用一次ProximityObserver.startObserving([zone1,...])
实例;它将从此接下来从Estimote Cloud检索所有必要的数据。
扫描Estimote遥测
用例:从您的Estimote信标获取传感器数据。
从版本1.1.0开始,`ProximityObserverConfiguration`已经公开了属性之一,它允许将遥测数据报告给Estimote Cloud。
您可以轻松扫描包含您的信标传感器数据的原始Estimote遥测数据包。遥测数据通过两个独立的子数据包进行广播,称为帧A和帧B。Proximity SDK 允许您一次性扫描整个合并数据(包含帧A和B数据以及完整的设备标识符)。默认启用遥测报告,但如果您出于任何原因想要禁用此功能,可以通过以下步骤停止遥测报告:
let proximityConfiguration = ProximityObserverConfiguration.custom(with: .info, requestsCLAuthorization: true, telemetryReportingEnabled: false)
示例应用
要获取一个工作原型,请从 Estimote Cloud 下载一个现成的应用模板。App ID 和 App Token 凭证将自动生成。
- 使用 Proximity 在前台运行一个简单演示。
- 使用 Notification 在后台运行演示并显示通知。
演示需要配置 Estimote Monitoring 的 Estimote 信标(设置)
文档
在这里您可以找到文档。
您的反馈和问题
在 Estimote,我们非常重视反馈!以下是一些分享您想法的常见方法:
变更日志
要查看我们的 SDK 最近版本的更改,请查阅变更日志。