【问题标题】:Geo Fencing functionality iOS 11地理围栏功能 iOS 11
【发布时间】:2018-05-07 13:21:44
【问题描述】:

我正在使用 Google 地图制作地理围栏。我的问题是关于 CLCircularRegion 的最小半径。因为我想与该区域工作 30 米。但该功能适用​​于 100 米。我查了很多,发现Apple需要最小半径100来创建一个区域,不管我设置的是30米还是50米。

这是链接 - Geofencing iOS 6

此外,didEnterRegion 在 100 米处调用,didExitRegion 的工作方式非常奇怪,需要花费很多时间。 我也读过,根据这些方法调用,它取决于塔单元等。

这是链接 - What is the maximum and minimum radius that can be set for regions in iOS geofencing.

我想知道我是否将区域设置为 50 米。为什么它不能按照所需的区域半径工作。事实上,我观察到它在半径 100 米范围内工作。

代码如下:

 func createRegion(lat : CLLocationDegrees,lng : CLLocationDegrees) -> CLCircularRegion?
    {
        let latitude = lat 
        let longitude = lng 
        var radius = CLLocationDistance(50)

        if radius > locationManager.maximumRegionMonitoringDistance
        {
            radius = locationManager.maximumRegionMonitoringDistance
        }

        let region = CLCircularRegion(center: CLLocationCoordinate2DMake(latitude, longitude), radius: radius, identifier: "TEST")

        region.notifyOnEntry = true
        region.notifyOnExit = true

        return region
    }

或者任何人都可以推荐一个具有地理围栏功能的好应用程序。这样我就可以将我的应用程序的准确性与它进行比较。

问题:我选择了 50 米半径,应该会出现“退出时”通知。但我在 250 米附近/附近收到通知,而且还不止于此。请帮帮我

谢谢!

【问题讨论】:

  • 您的问题是什么?仅仅要求更多信息不是我们可以帮助您的问题。您有特定的编程问题吗?
  • @kevin - 是的,我在第一行提到过,我想知道 CLCircular 区域的最小半径。
  • 你想知道什么?没有“最小半径”,但该设备确实添加了一些关于何时通知用户的限制,因此如果您遇到问题,您应该分享相关代码并提出问题,或者read through the guidelines 并指出您不知道的事情不明白。仅仅请求有关某个主题的信息不适合 SO,因为很难回答这些类型的问题。
  • @kevin,同意我读过苹果公司说没有最小半径。但是我设置了半径 50 并且当我距离该位置 100 米时调用了 didEnterInRegion。我不明白为什么?如果没有最小半径,那么问题是什么,为什么它不适用于半径 50 米。请让我知道您在编码中还需要什么来理解我的问题。

标签: swift google-maps ios11 geofencing


【解决方案1】:

查看 Apple 的开发者文档:

Article Apple

Official Documentation

在 iOS 模拟器或设备上测试您的区域监控代码时,请注意区域事件可能不会在跨越区域边界后立即发生。为了防止虚假通知,iOS 在满足某些阈值条件之前不会发送区域通知。具体来说,用户的位置必须越过区域边界,离开边界最小距离,并在该最小距离上保持至少 20 秒,然后才会报告通知。

具体的阈值距离由硬件和当前可用的定位技术决定。例如,如果禁用 Wi-Fi,则区域监控的准确性会大大降低。但是,出于测试目的,您可以假设最短距离约为 200 米。

并提醒,如果 Wi-Fi 被禁用,那么它会不太准确。

【讨论】:

    【解决方案2】:

    我认为您可以通过查看控制台中的设备日志来对设备上的最小半径进行逆向工程。例如,如果我在装有 iOS 14.7 的 iPhone 8 上将半径设置为小于 100m,则会收到以下日志语句:

    Fence:Start Started monitoring fence myapp/<private> (<<private>,<private>>, radius 100.000, active tech <private>)...
    

    所以,在我的情况下,100m 似乎是最小值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 2014-08-25
      • 2012-01-18
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      相关资源
      最近更新 更多