2016-07-10 21 views
1

Ich habe gerade letzte Woche von iBeacon erfahren und dachte, ich würde es versuchen. Ich habe dieses Leuchtfeuer bei Amazon gekauft. https://www.amazon.com/gp/product/B010Q2PUGA/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 Mit der Hellblau-App kann ich die Beacon-Informationen (UUID, Major, Minor usw.) lesen, so dass ich weiß, dass die Bake sendet. Nach diesem Tutorial habe ich eine App erstellt, um sich mit der Programmierung von Beacons vertraut zu machen. (Verwenden meiner UUID) Es gibt eine kleine Änderung an dem Code, ich musste println zum Drucken wegen der schnellen Versionen ändern. https://willd.me/posts/getting-started-with-ibeacon-a-swift-tutorial Mit all dem scheint meine App meinen Beacon nicht zu erkennen. In meinem Log/Debug-Bereich sehe ich nur:iOS App erkennt meinen Beacon nicht

[] 
[] 
[] 

Mein Code ist:

import UIKit 
import CoreLocation 

class ViewController: UIViewController, CLLocationManagerDelegate { 


    let locationManager = CLLocationManager() 
    let region = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: "8EBB5704-9697-02C9-D073-BF9162B72D7B")!, identifier: "iBeacon-6713") 
// let region = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: "8EBB5704-9697-02C9-D073-BF9162B72D7B")!, major: 11046, minor: 11047, identifier: "ibeacon") 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     locationManager.delegate = self; 
     if (CLLocationManager.authorizationStatus() != CLAuthorizationStatus.AuthorizedWhenInUse) { 
      locationManager.requestWhenInUseAuthorization() 
     } 
     locationManager.startRangingBeaconsInRegion(region) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

// func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) { 
//  print(beacons) 
// } 
    func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) { 
     print(beacons) 
    } 

} 

Xcode: Version 7.3.1 (7D1014)

OS X El Capitan: Version 10.11.5 (15F34)

iOS: Version 9.3.2 (13F69)

Apple-Swift-Version 2.2 (swiftlang-703.0.18.8 Klirren-703.0.31)

Antwort

1

Ich vermute, dass 8EBB5704-9697-02C9-D073-BF9162B72D7B nicht die Proximity UUID des Beacon ist. LightBlue zeigt eine Anzahl verschiedener UUIDs für ein Bluetooth-Gerät an, nicht alle davon sind die ProximityUUID. Wie jede iOS-App muss LightBlue die PrimityUUID kennen, um Beacons mit CoreLocation zu erkennen. Ist dies nicht der Fall, kann es dennoch Bluetooth-Übertragungen mit CoreBluetooth erkennen, die iBeacon-IDs können jedoch nicht gelesen werden. Dies ist wahrscheinlich, was passiert.

Sie müssen die ProximityUUID für das Gerät herausfinden. Wenn Sie dies nicht mit den Anweisungen des Herstellers tun können, können Sie ein Android-Gerät mit der Locate-App verwenden, die iBeacon-UUIDs lesen kann, ohne die Kennungen im Voraus zu kennen. Ein iOS-Gerät kann dies nicht tun.

+0

Danke für die Antwort. Leider kam die Einheit mit absolut keiner Dokumentation, und ich habe kein Android-Gerät .... – MWW

+0

Nun, ich war in der Lage, eine Windows-App zu finden, die mir eine andere UUID gab sowie den ganzzahligen Wert von Major und Minor . Alles funktioniert jetzt! Danke für die Information. – MWW