CoreBluetooth DidDiscoverperipheralがSWIFTで呼び出されていません
-
21-12-2019 - |
質問
私は99%私がCoreBluetooth
を正しく設定するための指示に従ったことを確信しています。私が何をしても、私のiPad Miniでこのアプリを実行すると、Bluetoothはそのオンと言っています。それはデバイスのスキャンであると言っていますが、それは絶対にデバイスを見つけません。私がデバイスのBluetoothメニューに移動すると、発見されている他のデバイスが表示されます。CBCentralManager
を初期化します。centralManagerDidUpdateState
を設定します。それがBluetoothが準備ができているのが確実な場合それはcentralManager.scanForPeripheralsWithServices
を呼び出します。これは正しく起こっています。しかし、私の委任関数centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!)
はこれまでに呼ばれることはありません。私のコードはとても簡単です。多分私は何かを欠けているが、私のMacBookがBTLEの装置であり、私のiPad MiniもBTLのデバイスであることを確認することができました。これが私のコードです。
import UIKit
import CoreBluetooth
class ViewController: UIViewController, CBCentralManagerDelegate {
var centralManager:CBCentralManager!
var blueToothReady = false
override func viewDidLoad() {
super.viewDidLoad()
startUpCentralManager()
}
func startUpCentralManager() {
println("Initializing central manager")
centralManager = CBCentralManager(delegate: self, queue: nil)
}
func discoverDevices() {
println("discovering devices")
centralManager.scanForPeripheralsWithServices(nil, options: nil)
}
func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) {
println("Discovered \(peripheral.name)")
}
func centralManagerDidUpdateState(central: CBCentralManager!) {
println("checking state")
switch (central.state) {
case .PoweredOff:
println("CoreBluetooth BLE hardware is powered off")
case .PoweredOn:
println("CoreBluetooth BLE hardware is powered on and ready")
blueToothReady = true;
case .Resetting:
println("CoreBluetooth BLE hardware is resetting")
case .Unauthorized:
println("CoreBluetooth BLE state is unauthorized")
case .Unknown:
println("CoreBluetooth BLE state is unknown");
case .Unsupported:
println("CoreBluetooth BLE hardware is unsupported on this platform");
}
if blueToothReady {
discoverDevices()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
. 解決
私は私のMacBookの広告を手に入れなければなりませんでした。 https://github.com/mttrb/beaconosx を使用してその使用したら、私が書いたとおりに働きましたそれ。
所属していません StackOverflow