diff --git a/Discovery/DiscoveryManager.m b/Discovery/DiscoveryManager.m index 45f3494..78ffb0b 100644 --- a/Discovery/DiscoveryManager.m +++ b/Discovery/DiscoveryManager.m @@ -38,8 +38,10 @@ #import "AppStateChangeNotifier.h" #import +#import @interface DiscoveryManager() +@property(strong, nonatomic) CLLocationManager* locationManager; @property (nonatomic, strong) dispatch_queue_t discoveryProviderQueue; @end @@ -132,6 +134,9 @@ - (instancetype) initWithAppStateChangeNotifier:(nullable AppStateChangeNotifier [sself resumeDiscovery]; }; + _locationManager = [[CLLocationManager alloc] init]; + [_locationManager requestWhenInUseAuthorization]; + [self startSSIDTimer]; } @@ -253,6 +258,8 @@ - (void) unregisterDeviceService:(Class)deviceClass withDiscovery:(Class)discove - (void) startSSIDTimer { + [_ssidTimer invalidate]; + _ssidTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(detectSSIDChange) userInfo:nil repeats:YES]; [_ssidTimer fire]; } @@ -265,6 +272,10 @@ - (void) stopSSIDTimer - (void) detectSSIDChange { + if ([_locationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined || + [_locationManager authorizationStatus] == kCLAuthorizationStatusDenied) { + return; + } NSArray *interfaces = (__bridge_transfer id) CNCopySupportedInterfaces(); __block NSString *ssidName; @@ -495,6 +506,7 @@ - (void) stopDiscovery if (!_shouldResumeSearch) { [self.appStateChangeNotifier stopListening]; + [self stopSSIDTimer]; } }