CoreLocation 不能与 Estimotes Beacon 一起使用
Posted
技术标签:
【中文标题】CoreLocation 不能与 Estimotes Beacon 一起使用【英文标题】:CoreLocation can't use with Estimotes Beacon 【发布时间】:2015-11-19 14:40:43 【问题描述】:我使用 Estimotes 室内位置构建了一个应用程序,任何我使用 CoreLocation 来查找我们的信标,我的应用程序都会更改 label.text。应用程序可以运行,但没有工作,label.text 不能改变。
override func viewDidLoad()
super.viewDidLoad()
let path = NSBundle.mainBundle().pathForResource("location", ofType: "json")
do
let content = try String(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
let locationSetup = ESTLocationBuilder.parseFromJSON(content)
//set up delegate
manager.delegate = self
locationManager.delegate = self
if (CLLocationManager.authorizationStatus() != CLAuthorizationStatus.AuthorizedWhenInUse)
locationManager.requestWhenInUseAuthorization()
locationManager.startRangingBeaconsInRegion(region)
func locationManager(manager: CLLocationManager, didRangeBeacons beacons:[CLBeacon], inRegion region: CLBeaconRegion)
let knownBeacons = beacons.filter $0.proximity != CLProximity.Unknown
if (knownBeacons.count > 0)
let closestBeacon = knownBeacons[0] as CLBeacon
if(closestBeacon.minor.integerValue == 41016)
self.snow.text = "find"
【问题讨论】:
尝试在 didRangeBeacons:inRegion: 和两个 if 语句中添加 NSLog 语句。打印哪些日志行? 我在代码中添加 NSLog,如果 (knownBeacons.count > 0) NSLog("find beacon") 和 if(closestBeacon.minor.integerValue == 41016) NSLog("catch") 但是Output不能打印任何东西,不知道为什么这个函数不能运行。 你在代码的什么地方初始化locationManager
?我没看到。它可能为零吗?
let locationManger = CLLocationManager(),我已经在课堂上声明了
【参考方案1】:
首先要尝试:
我会将locationManger = CLLocationManager()
的初始化移到类实例声明之外和viewDidLoad
内。我在对象构造过程中看到了初始化位置管理器的问题。
【讨论】:
谢谢,我找到了我的问题。我在测试 App 时忘记允许 corelocaiotn,所以我不能使用以上是关于CoreLocation 不能与 Estimotes Beacon 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
Estimote Beacon - 如何将 EstimoteTelemetry 与 Beacon 匹配
如何通过 estimote android sdk 更改 estimote 信标的 UUID?
ESTBeaconConnection 使 Estimote 信标无法被发现