获取Kontakt iBeacon的属性
我正在开发一个iBeacon
应用程序,我想要获得Kontakt iBeacons
所有属性。
有2或3话题关于在计算器,但没有人不能回答这个问题。
我的应用程序是一个全球性的iBeacon
项目。 我可以看到Estimote iBeacons
所有属性也可以改变major
minor
值。 我在Estimote SDK
使用了连接方法,但是无法连接Kontakt iBeacons
。 我只用Kontakt SDK
访问major
, minor
和rssi
值。
我有一个API key
来连接这些iBeacons
但我无法连接。 我只想学习访问这些值的方法。 有人可以告诉我这个方法吗?
谢谢,Halil。
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提供了非常有帮助,但丑陋和过时的回应。 不知何故,他的代码是我能find使用KontaktSDK API的唯一例子,所以在KontaktSDK API上多了一些…
这是Johny Kumar用新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读这个,请把它放在你的示例文档中。