13 [
self setupMeasurementListener];
21- (void)initializeSdk {
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];
50 [
self.measurementManager setPublishIntervalMs:1000];
54 NSLog(
@"LocationManager and MeasurementManager successfully initialized");
56 }
@catch (NSException *exception) {
57 NSLog(
@"Error initializing SDK: %@", exception.reason);
64- (void)setupMeasurementListener {
73 NSLog(
@"MeasurementManager not initialized");
80 NSLog(
@"Added measurement listener");
84 [
self demonstrateBeaconGenerators];
87 [
self demonstrateEddystoneGenerators];
90 [
self demonstrateWifiGenerators];
93 [
self demonstrateWifiRttGenerators];
96 [
self demonstrateLocationGenerators];
99 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
103 NSLog(
@"Removed measurement listener");
111- (void)demonstrateBeaconGenerators {
114 NSString *beaconId = [
self.measurementManager addBeaconGeneratorWithUuid:@"12345678-1234-1234-1234-123456789012"
121 NSLog(
@"Added beacon generator with ID: %@", beaconId);
126 [
self.measurementManager removeBleGeneratorWithId:beaconId];
127 NSLog(
@"Removed BLE generator: %@", beaconId);
132 [
self.measurementManager removeBleGenerators];
133 NSLog(
@"Removed all BLE generators");
140- (void)demonstrateEddystoneGenerators {
143 NSString *eddystoneId = [
self.measurementManager addEddystoneGeneratorWithNamespaceId:@"12345678901234567890"
144 instanceId:@"1234567890123456"
149 NSLog(
@"Added Eddystone generator with ID: %@", eddystoneId);
153 [
self.measurementManager removeBleGeneratorWithId:eddystoneId];
154 NSLog(
@"Removed Eddystone generator: %@", eddystoneId);
160- (void)demonstrateWifiGenerators {
163 NSString *wifiId = [
self.measurementManager addWifiGeneratorWithMac:@"AA:BB:CC:DD:EE:FF"
167 NSLog(
@"Added Wi-Fi generator with ID: %@", wifiId);
172 [
self.measurementManager removeWifiGeneratorWithId:wifiId];
173 NSLog(
@"Removed Wi-Fi generator: %@", wifiId);
178 [
self.measurementManager removeWifiGenerators];
179 NSLog(
@"Removed all Wi-Fi generators");
186- (void)demonstrateWifiRttGenerators {
189 NSString *wifiRttId = [
self.measurementManager addWifiRttGeneratorWithMac:@"11:22:33:44:55:66"
197 NSLog(
@"Added Wi-Fi RTT generator with ID: %@", wifiRttId);
202 [
self.measurementManager removeWifiRttGeneratorWithHash:wifiRttId];
203 NSLog(
@"Removed Wi-Fi RTT generator: %@", wifiRttId);
208 [
self.measurementManager removeWifiRttGenerators];
209 NSLog(
@"Removed all Wi-Fi RTT generators");
216- (void)demonstrateLocationGenerators {
219 NSString *locationId = [
self.measurementManager addLocationGeneratorWithLatMin:55.7558
226 NSLog(
@"Added location generator with ID: %@", locationId);
231 [
self.measurementManager removeLocationGeneratorWithId:locationId];
232 NSLog(
@"Removed location generator: %@", locationId);
237 [
self.measurementManager removeLocationGenerators];
238 NSLog(
@"Removed all location generators");
246 [
sensors enumerateKeysAndObjectsUsingBlock:^(NSNumber *sensorTypeKey, NCSensorMeasurement *measurement, BOOL *stop) {
249 NCSensorType type = measurement.type;
250 NSLog(@"Sensor type: %ld", (long)type);
255 NCVector3d *values = measurement.values;
256 NSLog(@"Sensor values - X: %f, Y: %f, Z: %f", values.x, values.y, values.z);
261 long long time = measurement.time;
262 NSLog(@"Measurement time: %lld ms", time);
266 [
self demonstrateVector3d:values];
274 [
signals enumerateKeysAndObjectsUsingBlock:^(NSString *signalId, NCSignalMeasurement *measurement, BOOL *stop) {
277 NCSignalType type = measurement.type;
278 NSLog(@"Signal type: %ld", (long)type);
283 NSString *id = measurement.id;
284 NSLog(@"Signal ID: %@", id);
289 double rssi = measurement.rssi;
290 NSLog(@"Signal RSSI: %f dBm", rssi);
295 double distance = measurement.distance;
296 NSLog(@"Signal distance: %f meters", distance);
301 long long time = measurement.time;
302 NSLog(@"Signal measurement time: %lld ms", time);
310- (void)demonstrateVector3d:(
NCVector3d *)vector {
314 NSLog(
@"Vector X: %f", x);
320 NSLog(
@"Vector Y: %f", y);
326 NSLog(
@"Vector Z: %f", z);
334 NSLog(
@"=== MeasurementManager Example ===");
336 [
self demonstrateMeasurementManagerMethods];
339 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
340 NSLog(
@"=== Example completed ===");
351@property (nonatomic, weak) MeasurementManagerExample *example;
353- (instancetype)initWithExample:(MeasurementManagerExample *)example;
357@implementation MeasurementListenerImpl
359- (instancetype)initWithExample:(MeasurementManagerExample *)example {
362 self.example = example;
368- (void)onSensorMeasurementDetected:(NSDictionary<NSNumber *, NCSensorMeasurement *> *)sensors {
369 NSLog(
@"Sensor measurements detected");
370 [
self.example demonstrateSensorMeasurements:sensors];
375- (void)onSignalMeasurementDetected:(NSDictionary<NSString *, NCSignalMeasurement *> *)signals {
376 NSLog(
@"Signal measurements detected");
377 [
self.example demonstrateSignalMeasurements:signals];
386int main(
int argc,
const char * argv[]) {
389 [example runExample];
392 [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:10.0]];