获取 Kontakt iBeacon 的属性
Get properties of Kontakt iBeacon
我正在开发 iBeacon
应用程序,我想获取 Kontakt iBeacons
的所有属性。
在 Whosebug 中有 2 或 3 个关于这个的主题,但没有人能回答这个问题。
我的应用程序是一个全球性的 iBeacon
项目。我可以看到 Estimote iBeacons
的所有属性,也可以更改 major
、minor
值。我使用 Estimote SDK
中的连接方法完成了此操作,但是我无法连接 Kontakt iBeacons
。我刚刚使用 Kontakt SDK
访问了 major
、minor
和 rssi
值。
我有一个 API key
来连接这些 iBeacons
但我无法连接。我只想学习访问这些值的方法。谁能告诉我这是怎么回事?
谢谢你,哈利尔。
client=[KTKClient new];
client.apiKey=@"apikey";
locationManager=[KTKLocationManager new];
locationManager.delegate=self;
NSError *error;
NSArray *array=[client getRegionsError:&error];
[locationManager setRegions:array];
//[locationManager stopMonitoringBeacons];
[locationManager startMonitoringBeacons];
beaconManager = [KTKBeaconManager new];
beaconManager.delegate = self;
[beaconManager startFindingDevices];
- (void)locationManager:(KTKLocationManager *)locationManager didRangeBeacons:(NSArray *)beacons{
for (CLBeacon *beacon in beacons) {
KTKBeacon *beaconData = [self _getDataForBeacon:beacon];
if (beaconData) beaconsData[beacon] = beaconData;
}
}
-(KTKBeacon *)_getDataForBeacon:(CLBeacon *)beacon
{
NSString *strURL = [NSString stringWithFormat:@"https://api.kontakt.io/beacon?proximity=%@&major=%@&minor=%@",
[beacon.proximityUUID UUIDString],beacon.major,beacon.minor];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:strURL]];
[request setValue:@"apikey" forHTTPHeaderField:@"Api-Key"];
[request setValue:@"application/vnd.com.kontakt+json; version=2" forHTTPHeaderField:@"Accept"];
NSError *error;
NSData *jsonData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
NSError * error1=nil;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error1];
KTKBeacon *ktkBeacon = [[KTKBeacon alloc] initWithDictionary:dic];
NSLog(@"%@",dic);
return ktkBeacon;
}
Johny Kumar 提供了非常有用但丑陋且过时的回复。不知何故,他的代码是我能找到的唯一使用 KontaktSDK API 的示例,因此为了进一步了解 KontaktSDK API...
这是 Johny Kumar 的回答的 swift 版本,新 API
import KontaktSDK
func beaconManager(manager: KTKBeaconManager, didRangeBeacons beacons: [CLBeacon], inRegion region: KTKBeaconRegion) {
print("Ranged beacons count: \(beacons.count)")
for beacon in beacons {
print(beacon)
let uuid = beacon.proximityUUID.UUIDString
let major = beacon.major
let minor = beacon.minor
let parameters: [String: AnyObject] = ["proximity":uuid, "major" : major, "minor": minor]
KTKCloudClient.sharedInstance().getObjects(KTKDevice.self, parameters: parameters){
response, error in
guard let objects = response?.objects else {return}
for object in objects{
if let device = object as? KTKDevice {
print("device: \(device)")
}
}
}
}
}
如果您想获取信标(或设备)的关联操作
func fetchActions(device: KTKDevice) {
let params = ["uniqueId":device.uniqueID]
KTKCloudClient.sharedInstance().getObjects(KTKAction.self, parameters: params) { response ,error in
guard let objects = response?.objects else {return}
for object in objects{
if let action = object as? KTKAction {
print(action.url)
}
}
}
}
Kontakt 没有提供任何如何执行此操作的示例,这非常糟糕,因此如果您从 Kontakt 阅读此内容,请将其放入您的示例文档中。
我正在开发 iBeacon
应用程序,我想获取 Kontakt iBeacons
的所有属性。
在 Whosebug 中有 2 或 3 个关于这个的主题,但没有人能回答这个问题。
我的应用程序是一个全球性的 iBeacon
项目。我可以看到 Estimote iBeacons
的所有属性,也可以更改 major
、minor
值。我使用 Estimote SDK
中的连接方法完成了此操作,但是我无法连接 Kontakt iBeacons
。我刚刚使用 Kontakt SDK
访问了 major
、minor
和 rssi
值。
我有一个 API key
来连接这些 iBeacons
但我无法连接。我只想学习访问这些值的方法。谁能告诉我这是怎么回事?
谢谢你,哈利尔。
client=[KTKClient new];
client.apiKey=@"apikey";
locationManager=[KTKLocationManager new];
locationManager.delegate=self;
NSError *error;
NSArray *array=[client getRegionsError:&error];
[locationManager setRegions:array];
//[locationManager stopMonitoringBeacons];
[locationManager startMonitoringBeacons];
beaconManager = [KTKBeaconManager new];
beaconManager.delegate = self;
[beaconManager startFindingDevices];
- (void)locationManager:(KTKLocationManager *)locationManager didRangeBeacons:(NSArray *)beacons{
for (CLBeacon *beacon in beacons) {
KTKBeacon *beaconData = [self _getDataForBeacon:beacon];
if (beaconData) beaconsData[beacon] = beaconData;
}
}
-(KTKBeacon *)_getDataForBeacon:(CLBeacon *)beacon
{
NSString *strURL = [NSString stringWithFormat:@"https://api.kontakt.io/beacon?proximity=%@&major=%@&minor=%@",
[beacon.proximityUUID UUIDString],beacon.major,beacon.minor];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:strURL]];
[request setValue:@"apikey" forHTTPHeaderField:@"Api-Key"];
[request setValue:@"application/vnd.com.kontakt+json; version=2" forHTTPHeaderField:@"Accept"];
NSError *error;
NSData *jsonData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
NSError * error1=nil;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error1];
KTKBeacon *ktkBeacon = [[KTKBeacon alloc] initWithDictionary:dic];
NSLog(@"%@",dic);
return ktkBeacon;
}
Johny Kumar 提供了非常有用但丑陋且过时的回复。不知何故,他的代码是我能找到的唯一使用 KontaktSDK API 的示例,因此为了进一步了解 KontaktSDK API...
这是 Johny Kumar 的回答的 swift 版本,新 API
import KontaktSDK
func beaconManager(manager: KTKBeaconManager, didRangeBeacons beacons: [CLBeacon], inRegion region: KTKBeaconRegion) {
print("Ranged beacons count: \(beacons.count)")
for beacon in beacons {
print(beacon)
let uuid = beacon.proximityUUID.UUIDString
let major = beacon.major
let minor = beacon.minor
let parameters: [String: AnyObject] = ["proximity":uuid, "major" : major, "minor": minor]
KTKCloudClient.sharedInstance().getObjects(KTKDevice.self, parameters: parameters){
response, error in
guard let objects = response?.objects else {return}
for object in objects{
if let device = object as? KTKDevice {
print("device: \(device)")
}
}
}
}
}
如果您想获取信标(或设备)的关联操作
func fetchActions(device: KTKDevice) {
let params = ["uniqueId":device.uniqueID]
KTKCloudClient.sharedInstance().getObjects(KTKAction.self, parameters: params) { response ,error in
guard let objects = response?.objects else {return}
for object in objects{
if let action = object as? KTKAction {
print(action.url)
}
}
}
}
Kontakt 没有提供任何如何执行此操作的示例,这非常糟糕,因此如果您从 Kontakt 阅读此内容,请将其放入您的示例文档中。