灯塔 2.1

Lighthouse 2.1

测试已测试
语言语言 Objective-CObjective C
许可证 自定义
发布上次发布2016年2月

Ivan Bruel维护。



Passworks信标管理平台

Lighthouse是将Passworks.io信标服务(http://beacons.passworks.io)连接到您的iOS应用程序的SDK。在Passworks.io仪表板中,您可以添加自己的信标,管理您的标签(场所/虚拟区域)以及与信标进入或退出相关的事件。

请注意,当前SDK处于测试阶段,因此尚未用于生产环境,并且功能可能在未通知的情况下进行更改。

在测试阶段,如果您希望接收关于SDK新构建的通知,请发送电子邮件至[email protected]

集成

Lighthouse.bundleLighthouse.framework拖到您的工作空间的“框架”中。如果提示,请选中“将项目复制到目标组文件夹”复选框,以确保框架和资源被复制到您的项目中。

设置

步骤1 - SDK设置

要设置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...
}

步骤2 - Core Location权限

为了确保您的应用程序在后台运行时可以扫描信标,您还必须在您的应用程序的Info.plist中添加NSLocationAlwaysUsageDescription值。此值是弹出窗口上提示用户授予权限的消息。

Core Location Prompt

步骤3 - 后台模式

为了确保您的应用程序可以在后台时触发附近信标的事件,您需要允许它在后台运行,所需的两种模式是位置更新使用蓝牙LE配件

Background Modes

信标扫描

启动

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个以下状态之一:CLProximityImminentCLProximityNearCLProximityFarCLProximityUnknown

lighthouseEventTriggered:onBeaconLHBeacon进入或退出指定靠近度时触发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,您可以通过调用identifyUseridentifyUser:identifyUser:attributes:logout方法。

identifyUser将触发匿名识别(如果您的应用程序不需要用户登录和注册)。

identifyUser:将接受一个userId进行识别(可以是电子邮件、用户名甚至是实际ID)。

identifyUser:attributes:允许您通过userId识别用户,同时接收一个包含可能包含所有您希望用户信息的字典的用户属性。

logout将一个之前已识别的用户重新设置为匿名。(与identifyUser相同的行为)

数据库

Lighthouse允许您深入了解由LHBeaconsLHTagsLHEvents组成的数据库。

灯塔的 sharedInstance 包含了对 beaconsbeaconsInRangetagsevents 属性的设置。这些表示上面提到的相应对象模型的数组。

LHTag

LHTag 模型代表与信标关联的标签,以创建 会话。它由以下部分组成:

属性 类型 描述
标识符 整型 Passworks.io 中的标签标识符。
名称 字符串 标签名称。
超时 整型 关闭会话的超时时间。
最后可见时间 NSDate 上次找到标签的时间戳。
会话标识符 字符串 随机生成的唯一会话标识符。

LHBeacon

属性 类型 描述
标识符 整型 Passworks.io 中的信标标识符。
名称 字符串 信标名称。
uuid 字符串 物理信标中设置的 UUID。
major 整型 物理信标中设置的主要标识符。
minor 整型 物理信标中设置的次要标识符。
vendorName 字符串 信标供应商的名称。
vendorSlug 字符串 信标供应商的别名。
tags [LHTag] 包含所有相关 LHTag 对象的数组。
events [LHEvent] 包含所有相关 LHEvent 对象的数组。
邻近度 CLProximity 信标的当前邻近度。

LHEvent

LHEvent 模型代表当灯塔框架遇到 LHBeacon 时所执行的行为。当某些条件吻合时,应触发 LHEvent,并向用户展示通知。该模型由以下部分组成:

属性 类型 描述
标识符 整型 Passworks.io 中的事件标识符。
名称 字符串 事件名称。
邻近度 CLProximity 触发事件的邻近度。
触发条件 LHEventTrigger EnterExit 之间切换,在此条件下触发事件。
单次触发 布尔值 如果事件应仅在其关联的标签的超时时间已过最大 timeout 时触发,则 true,否则 false
类型 LHEventType URLNotificationWebhookImagePassbook 之间进行切换,当用户打开由事件触发的地方性通知时,将执行相应的动作。
触发时间 NSDate 最近触发事件的时间戳。
超时 整型 框架不应多次触发相同事件的超时时间。
有效载荷 字符串 用于通知动作的内容。
通知消息 字符串 在通知中向用户展示的消息。

日志记录

Lighthouse 允许开发者选择是否显示日志,这可以通过调用 setVerbose: 来设置。在调试构建中,详细模式默认启用,否则禁用。

Objective-C

[Lighthouse setVerbose:YES];

Swift

Lighthouse.setVerbose(true)

帮助我们改进

请告诉我们如何使 SDK 更好。如果您有特定功能请求或发现了一个错误,请使用 GitHub 的问题报告。分支这些文档,并通过改进发送一个 pull request。

要与我们和其他开发者讨论 SDK,请 打开支持票据 或通过 api at passworks.io 邮件联系我们,如果您需要与我们交谈。