测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | 自定义 |
发布日期最后发布日期 | 2014年12月 |
由 Marcin Krzyżanowski 维护。
依赖关系 | |
Facebook-iOS-SDK | >= 0 |
AFOAuth1Client | >= 0 |
Foursquare-API-v2 | >= 0 |
SAMCache | >= 0 |
这是一个 iOS 库,用于简化与 iBeacon 的交互,如果您需要更通用的非 iOS 特定的 BLEKit 概览,请参考 BLEKit 项目。
它允许与信标进行预配置的交互。
配置以 JSON 文件格式提供 - 直接或作为指向网络上现有 JSON 的链接。
配置中显示的基本对象包括
BLEAction - 表示要执行的操作,例如显示带有给定消息的对话框或执行 Facebook 登记
BLECondition - 表示必须满足以执行 BLEAction 的条件,例如 '进入'(信标已出现),'cameImmediate'(信标在设备附近)
可以编写自己的自定义 BLEActions 和 BLEConditions 并将其提供给 BLEKit 实例。
安装 BLEKit 的首选方法是使用 CocoaPods。
可以使用以下行安装最新版本
pod 'BLEKit', :podspec => 'https://raw.github.com/upnext/blekit-ios/master/BLEKit.podspec'
由于与 Cocoapods 集成,请使用 workspace (.xcworkspace) 来构建库或示例应用程序(示例应用程序可在 示例 文件夹中找到)。
BLEKit 体验的一个重要组成部分是基于 JSON 的 iBeacon 配置。JSON 配置文件描述了 BLEKit 可以处理的动作、条件和信标。
在最简单的情况下,您需要做的只是编写 JSON 配置文件并使用您的文件初始化 BLEKit 实例。如果您需要任何自定义动作,您需要编写对该动作的支持(如下所述)并注册处理程序。
为您提供基于块的回调。
示例 JSON 提供了以下配置
示例应用程序可以在 示例 文件夹中找到。
#import <BLEKit/BLEKit.h>
NSError *error = nil;
BLEKit *blekit = [BLEKit kitWithZoneAtPath:jsonPath error:&error];
// remember to retain blekit instance!
self.blekit = blekit;
if (error) {
NSLog(@"Can't initialize BLEKit. %@", error);
}
开始查找信标
if (![self.bleKit startLookingForBeacons]) {
// problem, check you settings (bluetooth, background refresh, location permission etc...)
}
有关初始化对象的更多方法,包括从 URL 下载的文档中了解
处理器是处理配置的圆形灯塔事件的最简单方式。
for (BLEBeacon *beacon in blekit.beacons) {
[beacon setOnChangeProximityCallback:^(BLEBeacon *b) {
NSLog(@"Proximity of beacon %@ changed to value %@", b.identifier, @(b.proximity));
// Move beacon on view based on current proximity
[self updateProximity:b];
}];
[beacon setOnEnterCallback:^(BLEBeacon *b) {
NSLog(@"Beacon %@ did enter region", b.identifier);
// Show beacon on view
[self showBeacon:b];
}];
[beacon setOnExitCallback:^(BLEBeacon *b) {
NSLog(@"Beacon %@ did leave region", b.identifier);
// Remove beacon from view
[self removeBeacon:b];
}];
[beacon setOnPerformActionCallback:^BOOL(BLEBeacon *b, id<BLEAction> action, BLEEventType eventType, BOOL isPush) {
NSLog(@"Action class %@", [action class]);
if ([action isKindOfClass:[UPCustomAction class]]) {
/**
* Returns NO to prevent action to be performed, so action can be handled here
*
* return NO;
*/
}
return YES;
}];
}
请检查BLEKit示例应用程序以获取详细信息。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [self.bleKit applicationOpenURL:url sourceApplication:sourceApplication annotation:annotation];
}
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
[self.bleKit applicationDidReceiveLocalNotification:notification.userInfo];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
[self.bleKit applicationDidReceiveRemoteNotification:userInfo];
}
BLEKit内置了多个预定义操作的支撑,如alert
、facebook-checkin
、foursquare-checkin
、content
等。
该库依赖于Facebook SDK、Foursquare SDK和SAMCache组件。
首先,您必须指定blesox实例的代理。
self.blekit.delegate = self;
操作类需要遵守BLEAction协议。最简单的方法是通过扩展BLEAction
类。如果您的类继承自BLEAction并且需要为您的UPCustomAlertAction
初始化参数,则应使用指定的初始化器-initWithUniqueIdentifier:andTrigger:
完成。
@interface UPCustomAlertAction : BLEAction <BLEAction>
// Custom property for custom action
@property (strong) NSString *customProperty;
@end
以下方式覆盖方法-performBeaconAction:forState:eventType
非常重要。
- (void) performBeaconAction:(BLETrigger *)trigger forState:(BLEActionState)state eventType:(BLEEventType)eventType
{
switch (state) {
case BLEActionStateForeground:
{
// Do something when in foreground
NSLog(@"Foreground %@",self.customProperty);
}
break;
case BLEActionStateBackground:
{
// Do something when application is in background
NSLog(@"Background %@",self.customProperty);
}
break;
default:
break;
}
}
- (BOOL) canPerformBeaconAction:(BLETrigger *)trigger forState:(BLEActionState)state eventType:(BLEEventType)eventType
{
return YES
}
如果您已开发UPCustomAlertAction
类以处理操作类型"custom-alert"(在JSON文件中定义),并希望处理它,处理程序应按如下方式注册:
[BLEKit registerClass:[UPCustomAlertAction class] forActionType:@"custom-alert"];
使用(推送或本地)通知通知用户关于操作较为方便,当应用程序在后台时。如果您希望处理该操作,您必须将执行的操作数据传递回应用程序。这应通过指定带有适当标识符的用户信息值来完成,如下所示:
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.userInfo = @{BLEActionUniqueIdentifierKey: self.uniqueIdentifier, BLETriggerUniqueIdentifierKey: self.trigger.uniqueIdentifier};
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
操作将自动执行。然而,重要的是要记住,动作不会保留超过-performBeaconAction:forState:eventType
。因此,为了执行异步操作或保持动作实例更长时间,有必要保持强引用。
该软件可在MIT许可证下获得,允许您在您的应用程序中使用库。
如果您想为开源项目做出贡献,请联系[email protected]
版权(c)2014 UP-NEXT。保留所有权利。 http://www.up-next.com
本协议无条件授予任何获取本软件及其相关文档文件(统称为“软件”)复制件的个人使用软件的权利,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许获得软件的个人执行上述操作,前提是必须遵守以下条件:上述版权声明和本许可声明应包含在软件的所有副本或其其主要部分中。本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适用性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者不应对因使用软件、软件的使用或因使用或其他方式与软件相关联的任何索赔、损害或其他责任承担责任,无论是在合同行为、侵权行为或其他任何行为下产生。