私はCoreBluetoothフレームワークを使用しようとしており、コードをより保守性の高いものにするためにヘルパークラス(btHelper)を作成しました。代理人が別のスレッドで呼び出されていない
問題は、このヘルパークラスでは、デリゲートメソッドは、すべてがビッグクラスにスムージングされたときの元のように呼び出されなくなりました。はい、ヘルパークラスの.hでデリゲートメソッドを設定しています。はい、CBCentralManagerデリゲートをselfに設定しています。私は、すべてが1つのクラスに入っていたときとほとんど同じことをしました。 私はそれがメインスレッドと関係があると信じていますが、私はこれについてほとんど経験がありません。
具体的には、呼ばれる私が欲しいデリゲートメソッドは
-(void)centralManagerDidUpdateState:(CBCentralManager *)central
は、誰もが、私はこのヘルパークラスでそれが必要として働いてデリゲートの呼び出しを取得するために何をしなければならないかを教えていただけますでしょうか? ありがとう!
次はPrimaryViewControllerクラスとbtHelperクラス
あるbtHelper.m
-(void) activateBluetooth
{
self.manager= [[CBCentralManager alloc] initWithDelegate:self queue:nil];
}
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
//DELEGATE METHOD THAT NEVER GETS CALLED. SHOULD BE CALLED AS SOON AS self.manager is initiated
self.isAvailable=FALSE;
switch (central.state) {
case CBCentralManagerStatePoweredOff:
NSLog(@"CoreBluetooth BLE hardware is powered off");
break;
case CBCentralManagerStatePoweredOn:
NSLog(@"CoreBluetooth BLE hardware is powered on and ready");
self.isAvailable=TRUE;
break;
case CBCentralManagerStateResetting:
NSLog(@"CoreBluetooth BLE hardware is resetting");
break;
case CBCentralManagerStateUnauthorized:
NSLog(@"CoreBluetooth BLE state is unauthorized");
break;
case CBCentralManagerStateUnknown:
NSLog(@"CoreBluetooth BLE state is unknown");
break;
case CBCentralManagerStateUnsupported:
NSLog(@"CoreBluetooth BLE hardware is unsupported on this platform");
break;
default:
break;
}
}
PrimaryViewController.m
-(IBAction)connect
{
btHelper *bluetoothManager= [[btHelper alloc]init];
[bluetoothManager activateBluetooth];
}
あなたのBluetoothマネージャーが実際に何かをしていることを確認していますか?例えば。 'scanForPeripheralsWithServices'を呼び出すことによって? – Macondo2Seattle
IBActionにブレークポイントを設定して、トリップしているかどうか確認できますか? – Spectravideo328
@BlackRider CBCentralManagerを自動的に開始すると、デリゲートメソッドcentralManagerDidUpdateStateを呼び出す必要があります。この方法は、Bluetoothの状態を判断する際に重要です(たとえば、Bluetooth LTEがデバイスでサポートされているかどうか)。そこから、ブルートゥースが有効な場合、scanForPeripheralWithServicesのようなメソッドを呼び出すことができます – Teddy13