近くの Bluetooth デバイスをスキャンし、検出されたときにその名前を一覧表示する単純なアプリケーションを作成しようとしています。AppleのガイドhereCoreBluetooth
を含む、見つけたすべてのガイドに従って使用しています
ただし、決して機能しません。アプリを実行している iPhone 5 の隣に iPhone 4S を検出可能モードにしましたが、まったく検出されません。Bluetooth対応の車も試しましたが、BLEが搭載されているかどうかはわかりません。私は何を間違っていますか?これが私のコードの本質です。ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
[activity stopAnimating]; isScanning = NO; //activity is a GUI activity wheel
centralManager = [[CBCentralManager alloc] initWithDelegate: self queue: nil];
}
- (void)centralManagerDidUpdateState:(CBCentralManager *)central{
int state = central.state;
[self log: [NSString stringWithFormat: @"CBCentralManagerDidUpdateState: %d", state]];
//[self log] just NSLogs the message and adds it to a text view for the user to see.
if (state!=CBCentralManagerStatePoweredOn){
[self log: @"Error! Bluetooth not powered on!"]; //I never get this error.
}
}
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI{
[self log: [NSString stringWithFormat: @"Peripheral found with CoreBluetooth: %@", peripheral.name]];
//And I never see any of these "peripheral found" messages.
}
- (IBAction)scanButton:(id)sender {
if (!isScanning){
[activity startAnimating];
isScanning = YES;
[centralManager scanForPeripheralsWithServices:nil options:nil];
[self log: @"Scanning started."];
}
else{
[activity stopAnimating];
isScanning = NO;
[centralManager stopScan];
[self log: @"Scanning stopped."];
}
}
提案をありがとう。