Lighthouse是将Passworks.io信标服务(http://beacons.passworks.io)连接到您的iOS应用程序的SDK。在Passworks.io仪表板中,您可以添加自己的信标,管理您的标签(场所/虚拟区域)以及与信标进入或退出相关的事件。
请注意,当前SDK处于测试阶段,因此尚未用于生产环境,并且功能可能在未通知的情况下进行更改。
在测试阶段,如果您希望接收关于SDK新构建的通知,请发送电子邮件至[email protected]
将Lighthouse.bundle
和Lighthouse.framework
拖到您的工作空间的“框架”中。如果提示,请选中“将项目复制到目标组文件夹”复选框,以确保框架和资源被复制到您的项目中。
要设置SDK,您只需在应用程序的AppDelegate
子类上调用setupWithToken:
方法,在application:didFinishLaunchingWithOptions:
方法中即可。
Objective-C
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Lighthouse setupWithToken:@"YOUR-APP-TOKEN"];
// The rest of your code goes here...
}
Swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Lighthouse.setupWithToken("YOUR-APP-TOKEN")
// The rest of your code goes here...
}
为了确保您的应用程序在后台运行时可以扫描信标,您还必须在您的应用程序的Info.plist
中添加NSLocationAlwaysUsageDescription
值。此值是弹出窗口上提示用户授予权限的消息。
为了确保您的应用程序可以在后台时触发附近信标的事件,您需要允许它在后台运行,所需的两种模式是位置更新
和使用蓝牙LE配件
。
Lighthouse允许您的应用程序监控系统附近的信标,因此您需要通过在Lighthouse上调用lightUp
方法来打开信标扫描功能。
Objective-C
[[Lighthouse sharedInstance] lightUp];
Swift
Lighthouse.sharedInstance().lightUp()
如果尚未向用户请求权限,此方法调用将触发“位置服务权限”弹出框。
如果您想停止对信标的测距,可以调用turnOff
方法,这将停止所有基于位置的信标测距。
[[Lighthouse sharedInstance] turnOff];
Lighthouse.sharedInstance().turnOff()
Lighthouse会在几种情况下更新其数据库,例如在设置SDK时,当应用回到前台,或在触发refresh
方法的显式调用时。这将刷新Passworks.io仪表板中设置的 所有信标、事件和标签。
Objective-C
[[Lighthouse sharedInstance] refresh];
Swift
Lighthouse.sharedInstance().refresh()
Lighthouse将采用Passworks.io仪表板上定义的行为,因此任何事件将在后台触发,无需您任何额外的代码。但为了更高级的使用,Lighthouse支持委托协议以更精确地控制功能。
要设置委托,只需在SDK上设置属性。
Objective-C
[Lighthouse sharedInstance].delegate = self;
Swift
Lighthouse.sharedInstance().delegate = self
将要分配的对象需要遵守LHDelegate
协议。所有协议的接口都是可选的,因此不需要实现所有方法。
lighthouseBeaconsRefreshed:
在从前面提到的任何方式更新数据库时被调用(请参阅“更新”部分)
lighthouseBeaconDidChangeProximity:
在附近的信标之间改变其靠近性时被调用,比如2个以下状态之一:CLProximityImminent
、CLProximityNear
、CLProximityFar
或CLProximityUnknown
。
lighthouseEventTriggered:onBeacon
在LHBeacon
进入或退出指定靠近度时触发LHEvent
。这些事件需要在Passworks.io仪表板上进行映射以触发。
lighthouseShouldTriggerEvent:onBeacon:
是一个委托方法,允许您更好地控制SDK的运行方式,默认情况下,SDK会在任何事件发生时触发,您可以通过返回false
来避免触发某些事件。
默认情况下,Lighthouse仅在应用处于后台时触发UILocalNotifications
,因为iOS不支持在应用处于前台时显示通知。为了更好地控制这一限制,Lighthouse允许在应用处于前台时触发与通知对应的UIAlertViews
。这可以通过triggerAlertViewInForeground
属性进行设置。
[Lighthouse sharedInstance].triggerAlertViewInForeground = YES;
Lighthouse.sharedInstance().triggerAlertViewInForeground = true
Lighthouse允许用户跟踪,以便从信标解决方案中获得最佳的分析效果。为了将用户识别为Lighthouse SDK,您可以通过调用identifyUser
、identifyUser:
、identifyUser:attributes:
和logout
方法。
identifyUser
将触发匿名识别(如果您的应用程序不需要用户登录和注册)。
identifyUser:
将接受一个userId
进行识别(可以是电子邮件、用户名甚至是实际ID)。
identifyUser:attributes:
允许您通过userId
识别用户,同时接收一个包含可能包含所有您希望用户信息的字典的用户属性。
logout
将一个之前已识别的用户重新设置为匿名。(与identifyUser
相同的行为)
Lighthouse允许您深入了解由LHBeacons
、LHTags
和LHEvents
组成的数据库。
灯塔的 sharedInstance
包含了对 beacons
、beaconsInRange
、tags
和 events
属性的设置。这些表示上面提到的相应对象模型的数组。
LHTag
模型代表与信标关联的标签,以创建 会话。它由以下部分组成:
属性 | 类型 | 描述 |
---|---|---|
标识符 | 整型 | Passworks.io 中的标签标识符。 |
名称 | 字符串 | 标签名称。 |
超时 | 整型 | 关闭会话的超时时间。 |
最后可见时间 | NSDate | 上次找到标签的时间戳。 |
会话标识符 | 字符串 | 随机生成的唯一会话标识符。 |
属性 | 类型 | 描述 |
---|---|---|
标识符 | 整型 | Passworks.io 中的信标标识符。 |
名称 | 字符串 | 信标名称。 |
uuid | 字符串 | 物理信标中设置的 UUID。 |
major | 整型 | 物理信标中设置的主要标识符。 |
minor | 整型 | 物理信标中设置的次要标识符。 |
vendorName | 字符串 | 信标供应商的名称。 |
vendorSlug | 字符串 | 信标供应商的别名。 |
tags | [LHTag] | 包含所有相关 LHTag 对象的数组。 |
events | [LHEvent] | 包含所有相关 LHEvent 对象的数组。 |
邻近度 | CLProximity | 信标的当前邻近度。 |
LHEvent
模型代表当灯塔框架遇到 LHBeacon
时所执行的行为。当某些条件吻合时,应触发 LHEvent
,并向用户展示通知。该模型由以下部分组成:
属性 | 类型 | 描述 |
---|---|---|
标识符 | 整型 | Passworks.io 中的事件标识符。 |
名称 | 字符串 | 事件名称。 |
邻近度 | CLProximity | 触发事件的邻近度。 |
触发条件 | LHEventTrigger | 在 Enter 或 Exit 之间切换,在此条件下触发事件。 |
单次触发 | 布尔值 |
如果事件应仅在其关联的标签的超时时间已过最大 timeout 时触发,则 true ,否则 false 。 |
类型 | LHEventType | 在 URL 、Notification 、Webhook 、Image 和 Passbook 之间进行切换,当用户打开由事件触发的地方性通知时,将执行相应的动作。 |
触发时间 | NSDate | 最近触发事件的时间戳。 |
超时 | 整型 | 框架不应多次触发相同事件的超时时间。 |
有效载荷 | 字符串 | 用于通知动作的内容。 |
通知消息 | 字符串 | 在通知中向用户展示的消息。 |
Lighthouse 允许开发者选择是否显示日志,这可以通过调用 setVerbose:
来设置。在调试构建中,详细模式默认启用,否则禁用。
Objective-C
[Lighthouse setVerbose:YES];
Swift
Lighthouse.setVerbose(true)
请告诉我们如何使 SDK 更好。如果您有特定功能请求或发现了一个错误,请使用 GitHub 的问题报告。分支这些文档,并通过改进发送一个 pull request。
要与我们和其他开发者讨论 SDK,请 打开支持票据 或通过 api at passworks.io
邮件联系我们,如果您需要与我们交谈。