这是一个将多个 iBeacon 的状态变化转换为 NSNotification 来通知的库。主要具有以下两个功能。
指定多个 Beacon,对于每个 Beacon,
这些状态变化都将以 NSNotification 的形式通知。
如果各个 Beacon 的 UUID 相同,会输出哪个是其中最靠近的 Beacon 的通知。
如果 UUID 不同,则输出在数量上与第一个 Beacon 的 UUID 相同的 Beacon 集合中最靠近的 Beacon 的通知。
为了运行示例项目;克隆存储库,并首先从示例目录运行 pod install
请参阅 Example/IBeaconNotifierExample/{GRTAppDelegate.m,GRTExampleViewController.m}
首先,以 TSV 格式创建要使用的 Beacon。例如,先保存以下这样的 beacon.tsv
到 Bundle 中。这个 TSV 是这样的:“第一行是列名”,“第二行及以下都是数据”。各列的含义如下。
例子:
id uuid major minor
BeaconA 00000000-04B1-1001-B000-001C4D153904 1 4
BeaconB 00000000-04B1-1001-B000-001C4D153904 0 2
BeaconC 00000000-04B1-1001-B000-001C4D153904 1 3
首先,
#import "IBNBeaconService.h"
导入。
要启动 Beacon 监视,可以这样做。
// start beacon service
self.beaconService = [IBNBeaconService createWithFilename:@"beacon.tsv" bundle:nil];
[self.beaconService start];
IBNBeaconService
的实例可以在任何地方保持。
然后,您可以用任意代码通过 NSNotificationCenter 接收 beacon 的事件。
首先,导入定义有常量的头文件。
#import "IBNBeaconServiceConst.h"
Observe IBN_CHANGE_BEACON_STATE
的 Notification。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleEvent:)
name:IBN_CHANGE_BEACON_STATE
object:nil];
在事件处理程序中,您可以获取以下信息。
note.userInfo[IBN_BEACON_ID]
beacon.tsv
中指定的 id
字符串进入note.userInfo[IBN_BEACON_STATE]
IBN_BEACON_STATE_INSIDE
IBN_BEACON_STATE_OUTSIDE
IBN_BEACON_STATE_FAR
IBN_BEACON_STATE_NEAR
观察 IBN_CHANGE_NEAREST_BEACON
的通知。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleEvent:)
name:IBN_CHANGE_NEAREST_BEACON
object:nil];
在事件处理程序中,您可以获取以下信息。
note.userInfo[IBN_BEACON_ID]
beacon.tsv
中指定的 id
字符串进入NsNull
。Morishita Ken, [email protected]
iBeaconNotifier 在MIT许可证下可用。更多信息请参阅LICENSE文件。