Loopd Beacon SDK 提供与 Android/iOS 设备上 Loopd beacon 交互的 API,包括距离测量、连接及 Loopd beacon 之间的数据读写。
版本 | 最小 iOS 目标 |
---|---|
1.x | iOS 8 |
LoopdSDK 通过 CocoaPods 提供使用。要安装,只需将以下行添加到您的 Podfile:
pod "LoopdSDK"
克隆仓库和 Example 目录中的示例项目。
LCBadgeManager
是一个基本的帮助开发者控制 Loopd 徽章的管理器。
@interface ViewController () <LCBadgeManagerDelegate>
@property (strong, nonatomic) LCBadgeManager *badgeManager;
@end
- (void)viewDidLoad {
[super viewDidLoad];
self.badgeManager = [LCBadgeManager new];
self.badgeManager.delegate = self;
[self.badgeManager startScan];
}
您还可以对其施加限制。
// config
LCScanningConfig *scanningConfig = [LCScanningConfig new];
scanningConfig.RSSI = -50;
scanningConfig.isAllowDuplicatesKey = YES;
[self.badgeManager startScanWithConfig:scanningConfig];
尝试与其连接徽章。连接后,您可以执行徽章的命令。
#pragma mark - Badge Manager Delegate
- (void)badgeManager:(LCBadgeManager *)badgeManager didDiscoverBadge:(LCBadge *)badge {
[self.badgeManager connectBadge:badge];
}
- (void)badgeManager:(LCBadgeManager *)badgeManager didConnectBadge:(LCBadge *)badge {
// turn on red LED
[self.badgeManager executeCommandCode:@"0F"];
}
@protocol LCBadgeManagerDelegate <NSObject>
@optional
- (void)badgeManager:(LCBadgeManager *)badgeManager didDiscoverBadge:(LCBadge *)badge;
- (void)badgeManager:(LCBadgeManager *)badgeManager didConnectBadge:(LCBadge *)badge;
- (void)badgeManager:(LCBadgeManager *)badgeManager didFailToConnectBadge:(LCBadge *)badge error:(NSError *)error;
- (void)badgeManager:(LCBadgeManager *)badgeManager didDisconnectBadge:(LCBadge *)badge error:(NSError *)error;
- (void)badgeManager:(LCBadgeManager *)badgeManager didUpdateValueForBadge:(LCBadge *)badge;
@end
LCContactExchangeManager
是一个帮助开发者轻松实现联系交换的管理器。
@interface ViewController () <LCContactExchangeManagerDelegate>
@property (strong, nonatomic) LCContactExchangeManager *contactExchangeManager;
@end
- (void)viewDidLoad {
[super viewDidLoad];
NSString *badgeId = @"123abc";
self.contactExchangeManager = [LCContactExchangeManager new];
self.contactExchangeManager.delegate = self;
[self.contactExchangeManager startScanningWithBadgeId:badgeId];
}
#pragma mark - Contact Exchange Manager Delegate
- (void)contactExchangeManager:(LCContactExchangeManager *)contactExchangeManager
didUpdateExchangedBadgeIds:(NSArray *)exchangedBadgeIds
targetBadge:(LCBadge *)targetBadge {
// targetBadge is the current badge
// exchangedBadgeIds is the array of other user's badge id
}
@protocol LCContactExchangeManagerDelegate <NSObject>
@optional
- (void)contactExchangeManager:(LCContactExchangeManager *)contactExchangeManager
didDetectBadge:(LCBadge *)badge;
- (void)contactExchangeManager:(LCContactExchangeManager *)contactExchangeManager
didUpdateExchangedBadgeIds:(NSArray *)exchangedBadgeIds;
- (void)contactExchangeManager:(LCContactExchangeManager *)contactExchangeManager
didUpdateExchangedBadgeIds:(NSArray *)exchangedBadgeIds
targetBadge:(LCBadge *)targetBadge;
@end
命令 | 动作 |
---|---|
00 | 关闭两个 LED |
0F | 打开红色 LED |
F0 | 打开黄色 LED |
FF | 打开两个 LED |
11 | 强制设备断开连接 |
A0xx | 每秒广告 xx 次 |
100004 | 增加传输功率 +4dBm |
10FF04 | 减少传输功率 -4dBm |
12 | 获取 MAC 地址 将 0x12 写入特性,以获取 12 字节 MAC 地址(AA:BB:CC:DD:EE:FF) |
通知为 0x12AABBCCDDEEFF | |
14 | 获取剩余空间量 写入 0x14,返回的通知将被 0x144060。这相当于 0x6040 = 24640 字节的内存是空闲的。 |
20 | 设置设备的本地名称 写入 0x20 + 8 字节(ASCII 的十六进制转换) |
80 | iBeacon模式 0x80+16字节数据+1个主要ID字节+1个次要ID字节 |
90 | Eddystone模式 0x90+1个帧类型字节+基于帧类型的PDU |
89 | 交替广播iBeacon和Eddystone |
示例
- (void)turnOnBothLEDs {
[self.badgeManager executeCommandCode:@"00"];
}
- (void)advertise4timesPerSecond {
[self.badgeManager executeCommandCode:@"A004"];
}
- (void)advertise8timesPerSecond {
[self.badgeManager executeCommandCode:@"A008"];
}
- (void)iBeaconExample {
// 0x80+16 bytes of Data + 1byte Major ID + 1 byte Minor ID
[self.badgeManager executeCommandCode:@"80FFEEDDCCBBAA99887766554433221100ABCD"];
}
- (void)eddystoneExample {
// 0x90+1 byte Frame Type + PDU based on Frame type
[self.badgeManager executeCommandCode:@"9000CEAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBB"];
}
Derrick Chao, [email protected]
LoopdSDK在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。