2016-10-13 18 views
2

私は以下のようにKontakt SDKのサンプルコードに従ってビーコンを検索しました。しかし、私は私のiPhoneの近くに11個のビーコンを持っている間、ビーコンカウントは常に0になっています。これで私の体はどんなことでも助けられますか?iOSアプリケーションのKontakt.ioビーコンを検出できません

私は、viewDidLoadメソッドでKTKBeaconManagerを初期化してから、リージョンオブジェクトを作成して以前のレンジングサービスを停止し、新しいモニタリングサービスとレンジングサービスを開始しました。

いつもそれはビーコンカウント= 0でdidRangeBeaconsを呼び出しました。正確には何の問題かわかりません。サンプルコードと同じコードです。私は、共通の問題は、あなたがそれは、あなたのビーコンの場合ではない場合は

Kontakt.setAPIKey("yourSuperSecretAPIKey")

とどちらかそれら二つの権限

NSLocationWhenInUseUsageDescription 
NSLocationAlwaysUsageDescription 

のいずれかを設定し忘れたということである数える

import UIKit 
import KontaktSDK 

class ViewController: UIViewController { 

var beaconManager: KTKBeaconManager! 
@IBOutlet var statusLabel: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Initiate Beacon Manager 
    beaconManager = KTKBeaconManager(delegate: self) 
    beaconManager.requestLocationAlwaysAuthorization() 

    // Region 
    let proximityUUID = NSUUID(uuidString: "f7826da6-4fa2-4e98-8024-bc5b71e0893e") 
    let region = KTKBeaconRegion(proximityUUID: proximityUUID! as UUID, identifier: "com.weenggs.KontaktDemo") 

    // Region Properties 
    region.notifyEntryStateOnDisplay = true 

    beaconManager.stopMonitoringForAllRegions() 

    // Start Ranging 
    beaconManager.startMonitoring(for: region) 
    beaconManager.startRangingBeacons(in: region) 
    beaconManager.requestState(for: region) 

    // Do any additional setup after loading the view, typically from a nib. 
} 

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


} 
extension ViewController: KTKBeaconManagerDelegate { 

func beaconManager(_ manager: KTKBeaconManager, didDetermineState state: CLRegionState, for region: KTKBeaconRegion) { 
    print("Did determine state \"\(state.rawValue)\" for region: \(region)") 
    statusLabel.text = "Did determine state \"\(state.rawValue)\" for region: \(region)" 
} 

func beaconManager(_ manager: KTKBeaconManager, didChangeLocationAuthorizationStatus status: CLAuthorizationStatus) { 
    print("Did change location authorization status to: \(status.rawValue)") 
    statusLabel.text = "Did change location authorization status to: \(status.rawValue)" 
    if status == .authorizedAlways{ 

     // Region 
     let proximityUUID = NSUUID(uuidString: "f7826da6-4fa2-4e98-8024-bc5b71e0893e") 
     let region = KTKBeaconRegion(proximityUUID: proximityUUID! as UUID, identifier: "com.weenggs.KontaktDemo") 

     // Region Properties 
     region.notifyEntryStateOnDisplay = true 

     beaconManager.startMonitoring(for: region) 
     beaconManager.startRangingBeacons(in: region) 
     beaconManager.requestState(for: region) 
    } 
} 

func beaconManager(_ manager: KTKBeaconManager, monitoringDidFailFor region: KTKBeaconRegion?, withError error: Error?) { 
    print("Monitoring did fail for region: \(region)") 
    print("Error: \(error)") 
    statusLabel.text = "Monitoring did fail for region: \(region)" 
} 

func beaconManager(_ manager: KTKBeaconManager, didStartMonitoringFor region: KTKBeaconRegion) { 
    print("Did start monitoring for region: \(region)") 
    statusLabel.text = "Did start monitoring for region: \(region)" 
} 

func beaconManager(_ manager: KTKBeaconManager, didEnter region: KTKBeaconRegion) { 
    print("Did enter region: \(region)") 
    statusLabel.text = "Did enter region: \(region)" 
} 

func beaconManager(_ manager: KTKBeaconManager, didExitRegion region: KTKBeaconRegion) { 
    print("Did exit region \(region)") 
    statusLabel.text = "Did exit region \(region)" 
} 

func beaconManager(_ manager: KTKBeaconManager, didRangeBeacons beacons: [CLBeacon], in region: KTKBeaconRegion) { 
    print("Did ranged \"\(beacons.count)\" beacons inside region: \(region)") 
    statusLabel.text = "Did ranged \"\(beacons.count)\" beacons inside region: \(region)" 
    if let closestBeacon = beacons.sorted(by: { $0.0.accuracy < $0.1.accuracy }).first , closestBeacon.accuracy > 0 { 
     print("Closest Beacon is M: \(closestBeacon.major), m: \(closestBeacon.minor) ~ \(closestBeacon.accuracy) meters away.") 
     statusLabel.text = "\(statusLabel.text) Closest Beacon is M: \(closestBeacon.major), m: \(closestBeacon.minor) ~ \(closestBeacon.accuracy) meters away." 
    } 
} 
} 

答えて

0

電池が抜けてしまう可能性があります。

0

最後に、私は(最後の12個の文字が一意であるインスタンスIDである)CBPeripheralクラスを使用してビーコンを検出し、インスタンスIDと受信したUUIDに基づいて一意に識別することができた

関連する問題