Buoy 0.1.2

Buoy 0.1.2

测试已测试
语言语言 Obj-CObjective C
许可 自定义
发布最新版发布时间2014 年 12 月

Ben GordonAndrew Parsons 维护。



Buoy 0.1.2

  • 作者:
  • Ben Gordon

Buoy 是一个简单的 iBeacon 监听器/管理器,为您处理所有复杂的部分,伙计!

现在也支持使用 Swift 编写了!

需求

  • iOS 7+

安装

使用 CocoaPods 安装 Buoy。

pod 'Buoy'

目录

监听 iBeacon

首先,在您想使用 Listener 和它的通知的类中导入 #import <BUOY.h>。Buoy 通过监听 iBeacon 并通过 广播 NSNotifications 来工作,因此您的一个类可以监听这些通知并对数据进行处理。

设置

在您可以通过 BUOYListener 获取通知之前,您需要对其进行设置。您需要监听的不同 Proximity UUIDs 的列表。这些与 iBeacon 本身相关,您可以将您不同的 iBeacon 配置为新 UUID,大多数主要种类的新 UUID。以下是设置 Listener 的方法:

// AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ...

    NSArray *uuids = @[[[NSUUID alloc] initWithUUIDString:@"00000000-0000-0000-0000-000000000000"],[NSUUID alloc] initWithUUIDString:@"11111111-1111-1111-1111-111111111111"]];
    [[BUOYListener defaultListener] listenForBeaconsWithProximityUUIDs:uuids];

    ...
}

处理 iBeacon 的发现

当 Listener 发现 iBeacon 时,它将在 notification userInfo 字典对象中传播一个包含该信标的通知。已发现的信标为 CLBeacon 类型。

// Set Up Notifications

[[NSNotificationCenter defaultCenter] addObserverForName:kBUOYDidFindBeaconNotification object:nil queue:nil usingBlock:^(NSNotification *note) {
        if (note.userInfo[kBUOYBeacon]) {
            CLBeacon *beacon = note.userInfo[kBUOYBeacon];
            // Do something here!
        }
}];

通知间隔

因为 iBeacon 可以以每秒 20 次以上的频率触发广告间隔,您可能不希望应用程序中始终接收通知。因此,您可以设置在找到每个信标后经过 x 秒时触发的通知间隔。监听器会跟踪为每个特定信标发送通知的时间,然后每次它看到该信标时,它将检查该时间与当前时间的关系,如果需要,则发送新的通知。

默认间隔是 0 秒

// Set the notification interval to 5 seconds.
[[BUOYListener defaultListener] setNotificationInterval:5];

停止监听

如果出于任何原因想要停止监听,有一些方法可以处理这个问题。

// Stop listening to one Proximity UUID
NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:@"00000000-0000-0000-0000-000000000000"];
[[BUOYListener defaultListener] stopListeningForBeaconsWithProximityUUID:uuid];

// Stop listening to all Proximity UUIDs
[[BUOYListener defaultListener] stopListening];

浮标 CLBeacon 方法

每个 CLBeacon 对象都有一些属性,您可以利用这些属性来处理您应用程序内部特定的逻辑。

  • major - NSNumber
  • minor - NSNumber
  • proximityUUID - NSUUID
  • accuracy - CLLocationAccuracy (米)
  • proximity - CLProximity (枚举)
  • rssi - NSInteger (信号强度 dB)

除了这些基本属性之外,还包括的 CLBeacon+Buoy.{h,m} 类别类还有一些为您简化操作的方法。

信标精度字符串

CLBeacon *someBeacon;
NSString *accuracy = [someBeacon accuracyStringWithDistanceType:kBuoyUnitTypeFeet];

这是用于 kBuoyUnitType 的以下枚举

  • kBuoyUnitTypeMeters
  • kBuoyUnitTypeFeet
  • kBuoyUnitTypeYards

主要/次要

NSString *M = [someBeacon majorString];
NSString *m = [someBeacon minorString];

将您的 iPhone/iPad 设置为 iBeacon

除了侦听之外,Buoy 还可以将您的 iPhone 转换为 iBeacon。首先,您需要在 Buoy 中包含的另一个单例上调用一个方法,即 [BUOYBeacon deviceBeacon]

[[BUOYBeacon deviceBeacon] setWithProximityUUID:[NSUUID UUID]
                                          major:@10001
                                          minor:@69
                                     identifier:@"com.someIdentifier.Id"];

这设置了 iBeacon 所需的属性,但不会开始传输。当您准备好开始传输时,只需要调用以下方法。

[[BUOYBeacon deviceBeacon] startTransmitting]

然后当您准备好停止传输时,只需要调用相反的方法。

[[BUOYBeacon deviceBeacon] stopTransmitting]

Swift

作为一个很棒的增加和学习工具 —— 这段代码已经移植到了 Swift。为了使此代码在您的设备上运行,您需要在您的 Info.plist 文件中添加一个密钥。

NSLocationAlwaysUsageDescription : "Some Description of why you want to take location"

从 iOS 8+ 开始需要这样做。

说到这一点,所有的 Swift 类都可以在 /Buoy/Swift 目录下找到,示例项目可以在 /Examples/Buoy-Swift 下找到。

许可证

本项目许可证为标准的 MIT 许可证,可以在 这里找到