ESTBeaconManager does not call delegate callback

I was hoping to drop ESTBeaconManager instead of the CLLocationManager (and that it would be a drop in replacement, the documentation seems to suggest that.

But for some reason the delegate callbacks are never called on any action. Is there something obvious I am missing? When I replace it again with the CLLocationManager (and change the protocol) then it works perfect again (and that is for me the strange thing, so the code seems to work with CLLocationManager for which this class was created)

(the regions are registered, or at least the command are called in both instances)

- (id) init {
    self = [super init];
    [ESTCloudManager setupAppID:@"xxx" andAppToken:@"xxx"];
    
    self.beaconManager = [[ESTBeaconManager alloc] init];
    //self.beaconManager = [[CLLocationManager alloc] init];
    self.beaconManager.delegate = self;
    
    if ([ESTBeaconManager authorizationStatus] == kCLAuthorizationStatusNotDetermined)
    {
        [self.beaconManager requestAlwaysAuthorization];
        [self initialiseRanging];
    }
    else if([ESTBeaconManager authorizationStatus] == kCLAuthorizationStatusAuthorized)
    {
                [self initialiseRanging];
    }
   return self;
}

- (void) initialiseRanging {
    id appDelegate = (iDomsAppDelegate *)[[UIApplication sharedApplication] delegate];
    for(DOBeacon* beacon in [[appDelegate dataManager] getBeacons].fetchedObjects){
        [self registerBeaconRegion:beacon];
    }
}

- (void)registerBeaconRegion:(DOBeacon *)beacon {
    if(beacon.location == nil || beacon.uuid == NULL){
        NSLog(@"Skiping this beacon (%@) as the location is nill or no UUID (%@)", [beacon name], [beacon uuid]);
        return;
    }
    
    // Check if already monitoring, and add if not.
    NSString* regionIdentifier = [DOBeaconManager createIdentifierFromBeacon:beacon];
    NSUUID* uuid = [[NSUUID alloc] initWithUUIDString:[beacon uuid]];
    [self registerRegion:uuid region:regionIdentifier];

}

- (void)registerRegion:(NSUUID*)uuid region:(NSString*)regionIdentifier {
    // We only register the UUID.
    CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc]
                                    initWithProximityUUID:uuid
                                    identifier:regionIdentifier];
    beaconRegion.notifyEntryStateOnDisplay=YES;
    
    CLBeaconRegion* region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid
                                       identifier:regionIdentifier];
    
    if(![[self regions] containsObject:region]){
        NSLog(@"Adding %@ to be monitored!", [uuid UUIDString]);
        [self.beaconManager startMonitoringForRegion:beaconRegion];
        //[self.beaconManager startRangingBeaconsInRegion:beaconRegion];
        [self.beaconManager requestStateForRegion:beaconRegion];
        [[self regions] addObject:region];
    } else {
        NSLog(@"Region %@ already monitoring it seems...", regionIdentifier);
    }
}

My excuses, the callbacks are very similar, but it is beaconManager instead of locationManager.

No worries! We should probably consider articulating this little difference in our documentation, or come up with straight “How to migrate from Core Location to Estimote SDK” guide. Thanks for sharing!