繁体   English   中英

iBeacon:didEnterRegion永远不会被调用

[英]iBeacon: didEnterRegion never gets called

我正在尝试获取用于iBeacon扫描和显示的示例应用程序。

这使用的是iOS 8,目标设备是iPhone 5s。 在iPhone 5s中运行应用程序之前,请遵循以下前提条件。

1)在info.plist中添加了NSLocationAlwaysUsageDescription 2)将iOS选择为8 3)在Xcode中的“功能”选项卡上的“背景模式”下,选择了“位置更新”和“使用蓝牙LE配件”。 4)iPhone的后台应用刷新功能处于打开状态。

不幸的是,didEnterRegion和didRangeBeacons根本没有被调用。 但是,didStartMonitoringForRegion被调用。

另请注意以下几点。

1)所有信标都可以正常工作,并可以使用下载的第三方应用程序在同一iPhone中进行验证。 2)在调试窗口中,我始终可以看到位置服务授权状态始终为“未确定”。 3)如果我在iPhone中关闭了位置服务,那么我的授权状态为“拒绝”。 4)[self.locationManager requestAlwaysAuthorization]; 通话无效。

我做错了什么? 如果您能帮助我解决这个问题,那将是非常不错的。

发生这种情况肯定令人沮丧,因为目前尚不清楚根本原因是什么。 关键是您需要获得授权状态才能被接受。

我会尝试的三件事:

  1. 确保您的.plist文件中包含NSLocationAlwaysUsageDescription字符串。 如果不存在,则不会提示用户授予位置服务权限。

     <key>NSLocationAlwaysUsageDescription</key> <string>Need to use location services</string> 
  2. 进入您的应用程序的“设置”,然后寻找位置服务开关。 尝试使用它来启用权限。

  3. 如果以上方法不能解决问题,请尝试卸载并重新安装该应用程序。 我已经看到一个应用程序在开发过程中进入了糟糕的状态,这是使iOS重新提示授权的唯一方法。

问题已解决。

我在编辑测试目录中的info.plist文件而不是在“支持文件”目录中编辑info.plist文件时犯了一个错误。

在“ Supporting Files”目录的info.plist中添加NSLocationAlwaysUsageDescription后,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM