显示来自信标的数据

时间:2017-01-21 22:48:11

标签: ios swift ibeacon

我正在使用本机应用程序来使用Apple的iBeacon框架,并尝试在控制台中记录我附近所有bluetoooth设备的列表。我一直关注this tutorial但是当我运行应用程序时,没有任何内容打印到控制台。我的错误在哪里?

以下是我编写的视图控制器文件的完整细节:

import UIKit
import CoreLocation


class ViewController: UIViewController, CLLocationManagerDelegate {

let locationManager = CLLocationManager()
let region = CLBeaconRegion(proximityUUID: NSUUID(uuidString: "852c0828-fe67-4dd7-b8ff-52852a66851e")! as UUID, major: 8008, minor: 1337, identifier: "Testing")


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    locationManager.delegate = self

    if (CLLocationManager.authorizationStatus() != CLAuthorizationStatus.authorizedWhenInUse) {
        locationManager.requestWhenInUseAuthorization()
    }

    locationManager.startRangingBeacons(in: region)
}

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

func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
    print(beacons)
    print("hello")
    }
 }

在运行时没有任何内容打印到控制台,包括"你好"。

2 个答案:

答案 0 :(得分:1)

代码看起来不错。你确定你知道你的信标标识符并且它正在传输吗?

我会尝试使用现成的信标检测器应用程序Locate来验证它是否可以看到您的信标。请注意,您必须在应用程序中配置信标UUID以进行检测。

其他一些提示:

  • 确保您的Info.plist包含这样的条目,否则它无法提示您进行位置访问:<key>NSLocationWhenInUseUsageDescription</key><string>This app needs to access your location so it can tell when you are near a beacon.</string>

  • 确保系统提示您输入位置信息并确实已授予它。签入设置 - &gt; [您的应用名称] - &gt;位置,并验证它说&#34;允许位置访问&#34;有一个不在Never的旁边的复选标记。

  • 确保蓝牙已开启。

答案 1 :(得分:0)

  1. 首先检查用于创建CLBeaconRegion的已配置的proximityUUID是否正确。
  2. 您指定的信标应处于活动状态,这意味着它不应该被释放,并且它应该为ON,以便当您的设备进入指定的信标区域时,您的设备可以看到它。
  3. 同时检查您的Info.plist并确保它应包含NSLocationWhenInUseUsageDescription对。因此,您的应用会提示您进行位置访问,并且您应该允许访问它。
  4. 你的蓝牙应该开启。