In my app I have a tab called \"Discover\". The Discover tab will use the users current location to find \"stuff\" near them. Instead of presenting the user with a generic Autho
Objective C
For a block callback on didChangeAuthorizationStatus add this in .h
@property void(^authorizationCompletionBlock)(BOOL);
and following in .m
-(void)locationManager:(CLLocationManager *)locationManager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
_authorizationStatus = status;
switch (status) {
case kCLAuthorizationStatusAuthorizedAlways:
case kCLAuthorizationStatusAuthorizedWhenInUse:
if (self.authorizationCompletionBlock) {
self.authorizationCompletionBlock(YES); // this fires block
}
default:
if (self.authorizationCompletionBlock) {
self.authorizationCompletionBlock(NO); // this fires block
}
break;
}
}
and add handler like this:
// this listens block
// in your VC or Utility class
authorizationCompletionBlock = ^(BOOL isGranted) {
completionBlock(isGranted);
};
Swift 3.2
var authorizationCompletionBlock:((Bool)->())? = {_ in}
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
switch (status)
{
case (.authorizedWhenInUse):
if authorizationCompletionBlock != nil
{
authorizationCompletionBlock!(true)
}
default:
if authorizationCompletionBlock != nil
{
authorizationCompletionBlock!(false);
}
}
}
and handler like this
authorizationCompletionBlock = { isGranted in
print(isGranted)
}