ESTConnection does not seem to call beaconConnectionDidSucceed

When is

- (void)beaconConnectionDidSucceed:(ESTBeaconConnection *)connection 

called and when:

- (void)beaconConnection:(ESTBeaconConnection *)connection didVerifyWithData:(ESTBeaconVO *)data error:(NSError *)error

After I connect to the beacon using:

ESTBeaconConnection* estBeaconConnection = [[ESTBeaconConnection alloc] initWithBeacon:beacon delegate:self startImmediately:YES];

only ‘didVerifyWithData’ is called and never beaconConnectionDidSucceed. Then ‘connection’ is not populated completely (e.g. major=0, minor=0, UUID=nil) while that data is correctly present in the ‘data’ variable.

I can use ‘didVerifyWithData’ and use the major and minor etc. returned in data to register that there was a successful connection, but am just wondering why beaconConnectionDidSucceed is not called (and neither any of the error callbacks). After the connection has established I disconnect straight away.

The purpose of this connection is just to update battery life etc. in the cloud, so as long as that is done I am happy.

This:

ESTBeaconConnection* estBeaconConnection = [[ESTBeaconConnection alloc] initWithBeacon:beacon delegate:self startImmediately:YES];

… suggests you’re creating the ESTBeaconConnection object and assigning it to a local variable … which will be immediately destroyed once it goes out of scope, resulting in no call to any delegates.

Try assigning it to a class-level, (“strong” reference) property instead.

Sorry, yes, I simplified the code too much. I do store the code in a BeaconManager class which subsequently is stored in the AppDelegate.

It all works fine, but I just expected a call to ‘beaconConnectionDidSucceed’ instead of the ‘didVerifyWithData’.
As long as the data is sent to the cloud it doesn’t make much of a difference to me, but just wanted to check.

Once I disconnect it calls the disconnect delegate fine too, so I think everything seems ok otherwise.