This is a bug that bothered me for a long time, I downloaded various code, cut it, and compared to my own code found, currently resolved but do not know why.
Bug Description: The Centralmanagerdidupdatestate proxy method does not automatically callback when the Cbcentralmanager agent is set to the current controller.
Paste the correct code first, you can perform to print.
#import "ViewController.h"#import<CoreBluetooth/CoreBluetooth.h>@interfaceViewcontroller () <CBCentralManagerDelegate>@property (nonatomic, strong) Cbcentralmanager*Mgr;@end@implementationViewcontroller- (void) viewdidload {[Super viewdidload]; Self.mgr=[[Cbcentralmanager alloc] initwithdelegate:self queue:nil];}-(void) Centralmanagerdidupdatestate: (Cbcentralmanager *) central{NSLog (@"centralmanagerdidupdatestate---------------");}@end
I set the proxy in a different way, and I don't invoke callbacks
#import "ViewController.h"#import<CoreBluetooth/CoreBluetooth.h>@interfaceViewcontroller () <CBCentralManagerDelegate>@property (nonatomic, strong) Cbcentralmanager*Mgr;@end@implementationViewcontroller- (void) viewdidload {[Super viewdidload];
//This creates a set proxy and does not invoke callbacks, Y? Self.mgr=[[Cbcentralmanager alloc] init]; Self.mgr.Delegate=Self ;}-(void) Centralmanagerdidupdatestate: (Cbcentralmanager *) central{NSLog (@"centralmanagerdidupdatestate---------------");}@end
The next summary of the BLE complete process, combined with the real machine, pedometer (ble device).
BLE setting Centralmanager agent BUG (not resolved)