IOSの迅速なBluetooth低エネルギーで接続するには?

周辺機器と接続したいです。 しかし、私のコードはdidConect関数を呼び出しません

これは私のコードです:

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
 let device = (advertisementData as NSDictionary)
            .object(forKey: CBAdvertisementDataLocalNameKey)
            as? NSString

        if device?.contains(BEAN_NAME) == true {

            print("Did discover peripheral", peripheral)

            self.bluetoothManager.stopScan()
            self._peripheral = peripheral
            self._peripheral.delegate = self
            central.connect(peripheral, options: nil)
        }
}


func centralManager( central: CBCentralManager, didConnect peripheral: CBPeripheral) { //cant call this
        print("connected to \(BEAN_NAME)")
        peripheral.discoverServices(nil)
    }

ログ:

BLE service is powered on
Did discover peripheral 
4
はい。 「周辺機器を検出しました」という印刷ログを記録します。 central.connectの後に何かを印刷すると、ログに印刷されます。 central.connectが実行されていないようです。
追加された 著者 Susy Valentina Rahardjo,
はい。 「周辺機器を検出しました」という印刷ログを記録します。 central.connectの後に何かを印刷すると、ログに印刷されます。 central.connectが実行されていないようです。
追加された 著者 Susy Valentina Rahardjo,
今私は機能didConnect周辺機器をすることができます、それは「」サインのため失敗しました。 @ Paulw11を手助けしてくれてありがとう
追加された 著者 Susy Valentina Rahardjo,
今私は機能didConnect周辺機器をすることができます、それは「」サインのため失敗しました。 @ Paulw11を手助けしてくれてありがとう
追加された 著者 Susy Valentina Rahardjo,
if テストに合格していることを確認しましたか?通常は、広告データを見て、興味のある端末の識別子を保存します。
追加された 著者 Paulw11,
_peripheral はどのように宣言されていますか?接続が失敗した場合に備えて、 didFailToConnect デリゲートメソッドを実装しましたか?
追加された 著者 Paulw11,
_peripheral はどのように宣言されていますか?接続が失敗した場合に備えて、 didFailToConnect デリゲートメソッドを実装しましたか?
追加された 著者 Paulw11,

5 答え

これを解決しました。
ただ変更する必要があります。

func centralManager(central: CBCentralManager, didConnect peripheral: CBPeripheral)

これに:

func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)

reference : Swift 3: Can't connect to peripheral via BLE

2
追加された
いいですね。 Swift 3のデリゲートメソッドのシグネチャが変更されたこともありますが、それにもかかわらず、私はあなたの質問を見てこれを見つけませんでした。
追加された 著者 davidgyoung,

これを解決しました。
ただ変更する必要があります。

func centralManager(central: CBCentralManager, didConnect peripheral: CBPeripheral)

これに:

func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)

reference : Swift 3: Can't connect to peripheral via BLE

2
追加された
いいですね。 Swift 3のデリゲートメソッドのシグネチャが変更されたこともありますが、それにもかかわらず、私はあなたの質問を見てこれを見つけませんでした。
追加された 著者 davidgyoung,

私は、Bluetooth LEデバイスをスキャンしてそれらをリストに表示するデモプロジェクトを作成しました。

Check it out on github: quickies/BluetoothScanner.ios

スクリーンショット

スクリーンショット

2
追加された

私は、Bluetooth LEデバイスをスキャンしてそれらをリストに表示するデモプロジェクトを作成しました。

Check it out on github: quickies/BluetoothScanner.ios

スクリーンショット

スクリーンショット

2
追加された
      @IBAction func btnConnect(_ sender: UIButton){

        self.appDelegate.bleManager.stopScan()

        self.appDelegate.selectPeripheral = self.arrayPeripheral[sender.tag]

        self.appDelegate.bleManager.connect(self.selectPeripheral, options: nil)

      }
0
追加された