[英]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]; 通话无效。
我做错了什么? 如果您能帮助我解决这个问题,那将是非常不错的。
发生这种情况肯定令人沮丧,因为目前尚不清楚根本原因是什么。 关键是您需要获得授权状态才能被接受。
我会尝试的三件事:
确保您的.plist文件中包含NSLocationAlwaysUsageDescription
字符串。 如果不存在,则不会提示用户授予位置服务权限。
<key>NSLocationAlwaysUsageDescription</key> <string>Need to use location services</string>
进入您的应用程序的“设置”,然后寻找位置服务开关。 尝试使用它来启用权限。
如果以上方法不能解决问题,请尝试卸载并重新安装该应用程序。 我已经看到一个应用程序在开发过程中进入了糟糕的状态,这是使iOS重新提示授权的唯一方法。
问题已解决。
我在编辑测试目录中的info.plist文件而不是在“支持文件”目录中编辑info.plist文件时犯了一个错误。
在“ Supporting Files”目录的info.plist中添加NSLocationAlwaysUsageDescription后,一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.