VeaconSDK 0.3.9

VeaconSDK 0.3.9

许可协议 MIT
发布最后发布2016年4月

Deniz Adalar 维护。



VeaconSDK 0.3.9

  • Valensas

VEACON SDK

Veacon 是一种低功耗、低成本的 iBeacon 发射器,可以通知附近设备其存在。Veacons 将任何实体位置转换为向 iOS 设备传输数据的信标。VeaconSDK 提供了您将应用程序连接到我们的 veacon 站点的最简单方式。有关 Veacons 的更多信息,请访问 veacon.com

当前版本

0.3.9

Podfile

pod 'VeaconSDK'

要求

VeaconSDK 需要 Bluetooth 4.0 LE 支持的设备和 iOS 7.0 或更高版本的设备。不支持低于此规范的设备。

要使用 VeaconSDK,您必须在 Veacon Portal 上拥有账户。创建账户后,您可以从门户中获取您的密钥。

使用方法

VeaconSDK 包含一个 .h 文件。一旦您将 VeaconSDK 集成到项目中,您就可以通过导入 VeaconSDK.h 开始使用它。

初始化

将以下导入语句插入到您的人类 gryon 应用程序中

#import <UIKit/UIKit.h>
#import <VeaconSDK.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate, VeaconDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

现在,我们可以初始化 VeaconSDK。为了初始化 VeaconSDK,您必须有一个密钥。在 AppDelegate.m 中,定位“application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)”方法,并添加以下初始化代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [VeaconSDK configureWithSecretKey:@"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"];

    //Your initialization code here...

    return YES;
}

现在,您的应用程序已准备好接收 Veacon 信号。为了接收信号,您需要启用检测模式。

您可以在整个应用程序中使用一些可选的配置。您可以打开或关闭日志记录模式,并设置一个委托对象以便接收您从 Veacon 站点输入的定制操作。您还可以在用户禁用设备的蓝牙时获得通知。

地图功能

地图功能用于显示地图和 Veacon 位置进行室内导航。您可以从 veacon.com 添加地图到您的项目中。要在您的 iOS 项目上启用此功能,请使用以下行

#import <Veacon/VeaconMapViewController.h>
VeaconMapViewController *mapViewController = [VeaconMapViewController new];
[self.navigationController pushViewController:mapViewController animated:YES];

如果发生任何连接问题或者您在 Veacon 站点上没有创建任何地图,您可以使用以下委托方法跟踪这些情况。

- (void) veaconMapViewController:(VeaconMapViewController*)veaconMapViewController numberOfMapsInServiceResponse:(NSInteger)count;
- (void) veaconMapViewController:(VeaconMapViewController*)veaconMapViewController serviceRespondedWithErrorCode:(NSInteger)code;

您可以通过以下方法重试服务调用:

-(void)retryServiceCall;

日志模式

日志模式用于调试。当启用日志模式时,每次应用程序看到其周围的Veacon变化时,Veacon门户都会发送包含有关Veacon信息的自定义事件。通过这种方式,您可以简单地调试应用程序而无需在Veacon门户上创建场景。

要启用日志模式,修改您的代码如下

[VeaconSDK setLoggingMode:YES];   

VeaconDelegate

您可以通过实现VeaconDelegate协议来获取从Veacon门户输入的场景中的自定义操作。为此,将以下代码添加到您的应用程序中

@interface AppDelegate : UIResponder <UIApplicationDelegate, VeaconDelegate>

实现VeaconDelegate后,您需要为您的应用程序编写两个新函数。

  • -- (void) customVeaconAction:(NSString*)key data:(NSDictionary *)data;
  • -- (void) bluetoothDisabledAction;

以下代码示例展示了如何简单地处理来自日志模式的自定义操作。

- (void)customVeaconAction:(NSString *)key data:(NSDictionary *)data{
    if ([key isEqualToString:@"log"]) {
        NSString *veaconName = [data valueForKeyPath:@"entry.veacon.name"];
        NSNumber *veaconId = [data valueForKeyPath:@"entry.veacon.sequence"];
        NSString *proximity = [data valueForKeyPath:@"entry.proximity"];

        NSLog(@"Veacon #%@ (%@) - %@", veaconId, veaconName, proximity);
    }
}

要处理蓝牙变化,我们实现了第二个函数,它会显示一个警报视图。

- (void) bluetoothDisabledAction{
    UIAlertView *message = [[UIAlertView alloc]

                            initWithTitle:@"VeaconSDK!"
                            message:@"Bluetooth is disabled. Veacon needs Bluetooth to be enabled."
                            delegate:nil
                            cancelButtonTitle:@"OK"
                            otherButtonTitles:nil];

    [message show];
}

Veacon监控

为了检测您应用程序周围的Veacon,您需要启动Veacon监控。一旦开始监控,您将开始接收在Veacon门户中定义的操作。如果没有,至少如果启用了日志模式,您将获取日志。要开始或停止Veacon监控,将以下行代码添加到您的代码中

- (IBAction)monitoring:(id)sender {

    UISwitch *s = (UISwitch*)sender;

    if([s isOn] && ([VeaconSDK isMonitoringActive] || [VeaconSDK isVeaconModeActive])){
        [s setOn:NO animated:YES];
    }else{

        NSError *err = nil;
        if([s isOn]){
            [VeaconSDK startVeaconMonitoring:&err];
        }else{
            [VeaconSDK stopVeaconMonitoring];
        }
        if(err){
            NSLog(@"%@",err);
        }
    }
}
重要提示:如果您的应用程序使用地理位置功能,因为Apple限制了应用程序使用的CLRegion对象的总数,监控可能会失败。

Veacon模式

您可能希望将您的设备转换为Veacon设备。转换成Veacon后,您可以使用其设备名称从Veacon门户分配场景给它。为了启用Veacon模式,将以下行代码添加到您的应用程序中

- (IBAction)beAVeacon:(id)sender {
    UISwitch *s = (UISwitch*)sender;

    if([s isOn] && ([VeaconSDK isMonitoringActive] || [VeaconSDK isVeaconModeActive])){
        [s setOn:NO animated:YES];
    }else{

        NSError *err = nil;
        if([s isOn]){
            [VeaconSDK startVeaconMode:&err];
        }else{
            [VeaconSDK stopVeaconMode];
        }
        if(err){
            NSLog(@"%@",err);
        }
    }
}
重要提示:Veacon模式和监控不能同时运行。您必须检查是否有模式正在运行,并尝试启动一个模式。否则,您将收到错误。

错误处理

由于网络通信,有时错误会通过NSNotificationCenter发送。您可以按照以下方式跟踪可能的通知

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveVeaconModeUpdate:) name:VLVeaconModeUpdated object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveVeaconNameUpdate:) name:VLVeaconNameUpdated object:nil];
}

- (void) receiveVeaconModeUpdate:(NSNotification *) notification{

    [self.beAVeaconSwitch setOn:NO animated:YES];

    dispatch_async(dispatch_get_main_queue(), ^{
        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle:@"Warning!"
                              message:[[notification userInfo] objectForKey:NSLocalizedDescriptionKey]
                              delegate:self
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
        [alert show];
    });
}

- (void) receiveVeaconNameUpdate:(NSNotification *) notification{

    NSLog(@"Your device has been added to Veacon Portal as %@",[[notification userInfo] objectForKey:VLVeaconName]);
}

示例项目

您可以在本存储库的Example文件夹中找到用于创建此文档的示例项目。

许可协议

请参阅LICENSE文件