2017-10-04 27 views
0

Je suis étudiant cadre de base Bluetooth et je l'ai fait un projet d'essai à ce sujet pour l'apprentissage:Bluetooth de base Swift obtenir le nom des appareils

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") 

    } 
} 

Pour commencer, je voudrais voir le nom Bluetooth autour de moi, pour cette raison, je avoir 2 iPhone. Un que j'utilise pour exécuter cette 'app' pour la numérisation et je voudrais voir le nom de l'autre iPhone (dans le paramètre Bluetooth est le nom est 'iPhone'), mais quand je commence à numériser la méthode 'didDiscover' est appelée mais la constante de l'appareil est nulle. Pourquoi? Qu'est-ce que j'ai tort?

Répondre

1

est mieux si vous utilisez peripheral.name à la place
let device = (advertisementData comme NSDictionary) .object (forKey: CBAdvertisementDataLocalNameKey) comme? NSString

+0

Merci de répondre! Votre réponse n'est pas techniquement un _answer_, vous suggérez simplement que ce serait «mieux» si l'utilisateur faisait quelque chose différemment. Mieux _how_, exactement? Quelques petites choses qui seraient utiles: 1) profiter du support de SO pour le formatage et dire, par exemple, "use' périphérique.name' au lieu de 'let device = ((advertisementData comme NSDictionary) .object (...)', et 2) Si vous avez vu votre changement suggéré résoudre des problèmes comme celui que l'affiche originale a, _so so_ explicitement, par exemple, "J'ai vu _exactly_ le comportement que vous décrivez, et en passant à (...) le fixe " – evadeflow