2017-10-04 10 views
0

を取得し、私は学習のためにそれについてのテストプロジェクトをした:このような理由のために、私は私の周りのBluetooth名を見たいのですが起動するためのコアのBluetoothスウィフトは、私は、コアのBluetoothフレームワークを勉強してデバイス名

class ViewController: UIViewController,CBCentralManagerDelegate,CBPeripheralDelegate { 

    var centralManager: CBCentralManager = CBCentralManager() 
    var peripheral: CBPeripheral? = nil 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     centralManager = CBCentralManager(delegate: self, queue: nil) 
    } 

    override func didReceiveMemoryWarning() 
    { 
     super.didReceiveMemoryWarning() 

    } 

    func centralManagerDidUpdateState(_ central: CBCentralManager) 
    { 
     central.scanForPeripherals(withServices: nil, options: nil) 
    } 

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

     let isMyIphone = device?.contains("iPhone") 

    } 
} 

I 2つのiPhoneを持っている。 私はこの「アプリ」をスキャンするために使用します。私は他のiPhoneの名前を見たいと思っています(Bluetooth設定では名前は「iPhone」です)。しかし、「didDiscover」メソッドのスキャンを開始すると、デバイス定数はnilです。 なぜですか?何が悪いですか? として:あなたは peripheral.name 代わりに=(advertisementData NSDictionaryのような) .object(CBAdvertisementDataLocalNameKey forKey)
LETデバイスを使用する場合

答えて

1

は良いですか? NSString

+0

お返事ありがとうございます!あなたの応答は技術的には_answer_ではなく、ユーザーが何か別のことをした場合には「より良い」ことを示唆するだけです。正確に_how_、正確に? 1)SOのフォーマットサポートの利点を活用し、例えば「let device =((advertisementData as NSDictionary).object(...)」の代わりに「peripheral.name」を使用するなど、 2)提案された変更が、元のポスターのような問題を解決したとしたら、「明示的に_あなたが記述している動作を見て、(...)固定した" – evadeflow

関連する問題