13 [
self setupMeasurementListener];
21- (void)initializeSdk {
25 self.sdk = [NCNavigineSdk getInstance];
30 [
self.sdk setUserHash:@"USER-HASH-HERE"];
35 [
self.sdk setServer:@"https://custom.navigine.com"];
40 self.locationManager = [
self.sdk getLocationManager];
45 self.measurementManager = [
self.sdk getMeasurementManager:
self.locationManager];
49 NSLog(
@"LocationManager and MeasurementManager successfully initialized");
51 }
@catch (NSException *exception) {
52 NSLog(
@"Error initializing SDK: %@", exception.reason);
59- (void)setupMeasurementListener {
66- (void)demonstrateMeasurementManagerMethods {
68 NSLog(
@"MeasurementManager not initialized");
74 [
self.measurementManager addMeasurementListener:
self.measurementListener];
75 NSLog(
@"Added measurement listener");
79 [
self demonstrateBeaconGenerators];
82 [
self demonstrateEddystoneGenerators];
85 [
self demonstrateWifiGenerators];
88 [
self demonstrateWifiRttGenerators];
91 [
self demonstrateLocationGenerators];
94 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
97 [
self.measurementManager removeMeasurementListener:
self.measurementListener];
98 NSLog(
@"Removed measurement listener");
106- (void)demonstrateBeaconGenerators {
109 NSString *beaconId = [
self.measurementManager addBeaconGeneratorWithUuid:@"12345678-1234-1234-1234-123456789012"
116 NSLog(
@"Added beacon generator with ID: %@", beaconId);
121 [
self.measurementManager removeBleGeneratorWithId:beaconId];
122 NSLog(
@"Removed BLE generator: %@", beaconId);
127 [
self.measurementManager removeBleGenerators];
128 NSLog(
@"Removed all BLE generators");
135- (void)demonstrateEddystoneGenerators {
138 NSString *eddystoneId = [
self.measurementManager addEddystoneGeneratorWithNamespaceId:@"12345678901234567890"
139 instanceId:@"1234567890123456"
144 NSLog(
@"Added Eddystone generator with ID: %@", eddystoneId);
148 [
self.measurementManager removeBleGeneratorWithId:eddystoneId];
149 NSLog(
@"Removed Eddystone generator: %@", eddystoneId);
155- (void)demonstrateWifiGenerators {
158 NSString *wifiId = [
self.measurementManager addWifiGeneratorWithMac:@"AA:BB:CC:DD:EE:FF"
162 NSLog(
@"Added Wi-Fi generator with ID: %@", wifiId);
167 [
self.measurementManager removeWifiGeneratorWithId:wifiId];
168 NSLog(
@"Removed Wi-Fi generator: %@", wifiId);
173 [
self.measurementManager removeWifiGenerators];
174 NSLog(
@"Removed all Wi-Fi generators");
181- (void)demonstrateWifiRttGenerators {
184 NSString *wifiRttId = [
self.measurementManager addWifiRttGeneratorWithMac:@"11:22:33:44:55:66"
192 NSLog(
@"Added Wi-Fi RTT generator with ID: %@", wifiRttId);
197 [
self.measurementManager removeWifiRttGeneratorWithHash:wifiRttId];
198 NSLog(
@"Removed Wi-Fi RTT generator: %@", wifiRttId);
203 [
self.measurementManager removeWifiRttGenerators];
204 NSLog(
@"Removed all Wi-Fi RTT generators");
211- (void)demonstrateLocationGenerators {
214 NSString *locationId = [
self.measurementManager addLocationGeneratorWithLatMin:55.7558
221 NSLog(
@"Added location generator with ID: %@", locationId);
226 [
self.measurementManager removeLocationGeneratorWithId:locationId];
227 NSLog(
@"Removed location generator: %@", locationId);
232 [
self.measurementManager removeLocationGenerators];
233 NSLog(
@"Removed all location generators");
240- (void)demonstrateSensorMeasurements:(NSDictionary<NSNumber *, NCSensorMeasurement *> *)sensors {
241 [
sensors enumerateKeysAndObjectsUsingBlock:^(NSNumber *sensorTypeKey, NCSensorMeasurement *measurement, BOOL *stop) {
245 NSLog(@"Sensor type: %ld", (long)type);
250 NCVector3d *values = measurement.values;
251 NSLog(@"Sensor values - X: %f, Y: %f, Z: %f", values.x, values.y, values.z);
256 long long time = measurement.time;
257 NSLog(@"Measurement time: %lld ms", time);
261 [
self demonstrateVector3d:values];
268- (void)demonstrateSignalMeasurements:(NSDictionary<NSString *, NCSignalMeasurement *> *)signals {
269 [
signals enumerateKeysAndObjectsUsingBlock:^(NSString *signalId, NCSignalMeasurement *measurement, BOOL *stop) {
273 NSLog(@"Signal type: %ld", (long)type);
278 NSString *id = measurement.id;
279 NSLog(@"Signal ID: %@", id);
284 double rssi = measurement.rssi;
285 NSLog(@"Signal RSSI: %f dBm", rssi);
290 double distance = measurement.distance;
291 NSLog(@"Signal distance: %f meters", distance);
296 long long time = measurement.time;
297 NSLog(@"Signal measurement time: %lld ms", time);
305- (void)demonstrateVector3d:(NCVector3d *)vector {
309 NSLog(
@"Vector X: %f", x);
315 NSLog(
@"Vector Y: %f", y);
321 NSLog(
@"Vector Z: %f", z);
329 NSLog(
@"=== MeasurementManager Example ===");
331 [
self demonstrateMeasurementManagerMethods];
334 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
335 NSLog(
@"=== Example completed ===");
344@interface MeasurementListenerImpl : NSObject <NCMeasurementListener>
346@property (nonatomic, weak) MeasurementManagerExample *example;
348- (instancetype)initWithExample:(MeasurementManagerExample *)example;
352@implementation MeasurementListenerImpl
354- (instancetype)initWithExample:(MeasurementManagerExample *)example {
357 self.example = example;
363- (void)onSensorMeasurementDetected:(NSDictionary<NSNumber *, NCSensorMeasurement *> *)sensors {
364 NSLog(
@"Sensor measurements detected");
365 [
self.example demonstrateSensorMeasurements:sensors];
370- (void)onSignalMeasurementDetected:(NSDictionary<NSString *, NCSignalMeasurement *> *)signals {
371 NSLog(
@"Signal measurements detected");
372 [
self.example demonstrateSignalMeasurements:signals];
381int main(
int argc,
const char * argv[]) {
384 [example runExample];
387 [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:10.0]];