Ich nehme an, Sie mehrere centrals in AppDelegate im "Reinstantiate Your Central and Peripheral Managers" section of the documentation wie beschrieben wiederherstellen wollen, sind?
Wenn ja, könnte ich die didFinishLaunchingWithOptions sehen etwas wie folgt aussehen:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.referencesToCentrals = [NSMutableArray array];
NSArray *centralManagerIdentifiers = launchOptions[UIApplicationLaunchOptionsBluetoothCentralsKey];
if ((centralManagerIdentifiers) && (centralManagerIdentifiers.count > 0)) {
// The system knows about one or more centrals that need to be restored.
for (NSString *identifier in centralManagerIdentifiers) {
CBCentralManager *manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@{CBPeripheralManagerOptionRestoreIdentifierKey : identifier}];
[self.referencesToCentrals addObject:manager];
}
}
else {
// No centrals need to be restored. If desired, create one for use and save a reference like this:
CBCentralManager *manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@{CBPeripheralManagerOptionRestoreIdentifierKey : [[NSUUID UUID] UUIDString]}];
[self.referencesToCentrals addObject:manager];
}
// Set up window, etc...
return YES;
}
Sie werden vielleicht nicht einen Verweis auf alle Ihre centrals im AppDelegate behalten möchten, wie ich in diesem Beispiel mache noch notwendigerweise Lassen Sie Ihren App-Delegierten als CBCentralManagerDelegate des Central fungieren, aber Sie erhalten die Idee ...
Ich sehe Sie initialisieren centralmanager in der App Delegat, aber was ifcentral Manager ist in der anderen Klasse? Ich habe SharedManager für den zentralen Manager. – Paragon
Indem Sie den Delegaten bei der Initialisierung auf "self" setzen, implizieren Sie, dass AppDelegate der Delegat ist. Ist das richtig? – vikzilla