Xcode/Swiftの初心者です。Bluetoothも素人です。
「iOS x BLE Core Bluetoothプログラミング」(ソシム社)のサンプルの内Scanの部分を動かそうとしています。
開発環境:
Xcode 11.3/Swift 5.1
iPhone 6s Plus ← 実行デバイス
ASUS Zenfone ← テスト対象
(上記 iPhone を実行デバイスとして Runをかけています。)
問題点:
近くにある Bluetoothデバイスのうち、一部のデバイス名が取得できません。具体的には、添付−2のLogは、3、4分スキャンをかけたものですが、“USER の MacBook Pro“ (これは、Xcode開発用の Macです。)だけ(とnull, SMU********001016)で、例えば添付−3は、開発用の Mac で出したリストですが、ここに出ている ASUS_Z01BAD(これを取得したい!)は、拾ってきません。(この中のもう1つの kkのiPhoneは、実行中のデバイスです。)
ちなみに、添付−4は、参考までにiPhoneに出した、LightBlueのリストです。こちらにも、ASUS_Z01BADは、出ません、これも疑問なのですが?これは、付け足しの疑問です。
よろしくお願いします。
【添付−1】Swift コード(Scan関係部分)
上記の本で公開されている、コードは、Xcode 8あたりのものなので、Xcode 11用に最小限の変更を加えて実行しています。
// MARK: CBCentralManagerDelegate
// セントラル マネジャーの状態が変化すると呼ばれる
func centralManagerDidUpdateState(_ central: CBCentralManager) {
print("state: (central.state)")
}
// 周辺にあるデバイスを発見すると呼ばれる
func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String : Any], rssi RSSI: NSNumber) {
print("発見したBLEデバイス: (peripheral)")
}
【添付−2】実行結果の例
state: CBManagerState
発見したBLEデバイス: <CBPeripheral: 0x2819d08c0, identifier = 02196E3A-16C5-8885-8B70-B7F1F86605B4, name = USER の MacBook Pro, state = disconnected>
発見したBLEデバイス: <CBPeripheral: 0x2819d4460, identifier = 5A3EDC62-E07E-743B-B895-AC59F0DCC46D, name = (null), state = disconnected>
発見したBLEデバイス: <CBPeripheral: 0x2819d4460, identifier = 8000EEF2-2C29-B044-F11C-B2ABA58ECE72, name = SMU********001016, state = disconnected>
発見したBLEデバイス: <CBPeripheral: 0x2819d0aa0, identifier = 02196E3A-16C5-8885-8B70-B7F1F86605B4, name = USER の MacBook Pro, state = disconnected>
発見したBLEデバイス: <CBPeripheral: 0x2819d0aa0, identifier = 02196E3A-16C5-8885-8B70-B7F1F86605B4, name = USER の MacBook Pro, state = disconnected>
回答4件
あなたの回答
tips
プレビュー