当信标在区域中时显示通知

时间:2017-01-20 20:01:17

标签: swift3 ibeacon

我希望在信标进入该区域时显示单个通知。我使用了以下代码:

    func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
    if region is CLBeaconRegion {
        BeaconNotificationFound()
    }
}

位置经理和地区是正确的。唯一的问题是,使用此功能没有任何反应。 我该怎么办?

这是上面的代码:

let locationManager = CLLocationManager()
let region = CLBeaconRegion(proximityUUID: UUID(uuidString: "E2C56DB5-DFFB-48D2-B060-D0F5A71096E0")!, identifier: "AirLocate")

    override func viewDidLoad() {
    super.viewDidLoad()

    //Darf Standort genutzt werden?
    locationManager.delegate = self
    if (CLLocationManager.authorizationStatus() != CLAuthorizationStatus.authorizedWhenInUse) {
        locationManager.requestWhenInUseAuthorization()
        }
    locationManager.startRangingBeacons(in: region)
    locationManager.startMonitoring(for: region)
}

1 个答案:

答案 0 :(得分:0)

听起来你没有收到didEnterRegion方法的回调。要检查的一些事项:

  1. 确保您的Info.plist包含如下条目,否则它将无法提示您进行位置访问:<key>NSLocationWhenInUseUsageDescription</key><string>This app needs to access your location so it can tell when you are near a beacon.</string>
  2. 确保系统提示您输入位置信息并确实已授予它。签入设置 - &gt; [您的应用名称] - &gt;位置,并验证它说“允许位置访问”的复选标记不是从不。“

  3. 确保蓝牙已开启。

  4. 通过将应用程序置于前台并关闭信标至少60秒来强制退出区域。完成后,重新打开信标。

  5. 如果上述方法均无效,请使用现成的信标检测器应用程序(如Locate或AirLocate)验证发送时是否可以看到您的信标。如果使用其中一个应用程序,则必须在应用程序中配置UUID以进行检测。