2

近くの 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."];
    }
}

提案をありがとう。

4

1 に答える 1

0

私はここで答えを見つけました:コア Bluetooth を動作させることができないようです 。周辺モードの iOS デバイスまたは BLE 周辺機器が必要です。基本的に周辺機器がBLEを使用していないため、非常に迷惑です。

LightBlue という App Store の無料アプリを実行している兄の iPhone 4S で動作します。アプリを使用すると、デバイスをペリフェラル モードにすることができます...このような素敵なテスト アプリを出すのは開発者の一種です。

于 2013-09-04T02:42:17.173 に答える