在我的iOS应用程序中,仍需要与iBeacon监视功能进行屏幕关闭模式的对抗。

在我的实验中,关闭屏幕后,仍会连续触发委托方法“locationManager:didRangeBeacons:inRegion:”,但是,一旦屏幕关闭,信号就会相应消失(RSSI = 0,beacon.accuracy = -1.0),然后10秒钟后,根本找不到信标。

我在this帖子中发现了一些重要信息,其中说:“iOS以两种不同方式使用信标:区域监视和信标测距。后者在后台不起作用...或当应用终止时。

输入区域后,CLLocationManager将仅触发一个委托调用。如果您在某个区域的内部开始监视该区域,则不会调用条目委托。您的应用必须手动调用CLLocationManager的requestStateForRegion方法。退出受监视的区域后,CLLocationManager将在大约30-45秒后调用didExitRegion。”

现在,我尝试在屏幕关闭时连续调用“requestStateForRegion:”方法。结果是:

  • 如果我的iPhone已经在iBeacon地区,则使用委托方法
    “didDetermineState”连续给出“CLRegionStateInside”;
  • 当我拿着iPhone并走出iBeacon地区时,或者
    在30-45秒后,关闭iBeacon的广告
    委托方法“didDetermineState”变为“CLRegionStateOutside”
    并保持在“外部”状态;
  • 当我拿着iPhone并走入iBeacon地区时,或打开
    iBeacon的广告再次委托方法
    “didDetermineState”仍然连续不断地给出“外部”,并且永远不会
    回到“内部”。

  • 我需要的是,当屏幕关闭时,我可以在我的iOS设备进入iBeacon区域后立即进行检测。寻求帮助...谢谢。

    最佳答案

    您是否在NSLocationAlwaysUsageDescription中添加了info.plist?我真的可以建议您按照this教程进行操作。

    07-24 09:47
    查看更多