【问题标题】:GeoFencing on iOSiOS 上的地理围栏
【发布时间】:2016-05-23 16:39:14
【问题描述】:

我正在使用 GeoFencing 设置区域并在用户进入或离开该区域时执行一些任务。 Bt 它不适合我,我正在使用 gollowing 代码

CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(some values,some values);
    CLRegion *region = [[CLRegion alloc]initCircularRegionWithCenter:coord radius:15.0 identifier:@"SF"];
    [locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyBest];

但是当我关闭应用程序并且应用程序正在监视并且我离开该区域或进入时,没有一个代表 didEnterRegiondidExitRegion 被调用。

【问题讨论】:

  • 关闭是什么意思??通过主页按钮发送到后台,或终止应用程序?已终止的应用程序无法运行。
  • 它不会立即被调用,有一个缓冲距离它仍然不会触发通知。

标签: iphone ios objective-c gps geofencing


【解决方案1】:

您定义的半径为 15m。那太小了。首先,尝试 50m 或更多。看看地图应用程序,如果你真的进入了那个地区。
此外,我希望您的意思是“发送到后台”,而不是关闭。
确保您已将应用程序设置为允许在后台运行? (通过 plist)

更新:

最终发现您终止了该应用程序。那么你当然不会再收到任何位置事件了。
解决方案: 不要通过双击主页按钮然后选择白色十字来终止它,只需单击主页按钮将其关闭,然后它就有机会在后台运行。

更新 2: 即使应用程序被终止,ios 也会在它注册到位置监控服务后重新启动它: 来自CllLocationManager Class Reference

如果您启动此服务并且您的应用程序随后 终止,系统自动重新启动应用程序到 新事件到来时的背景...

【讨论】:

  • 我已允许应用程序在运行正常的后台运行。我完全关闭了应用程序,当应用程序完全关闭时,地理围栏不工作吗?我可以在状态栏和设置中看到 GeoFencing 图标。
  • 您是否通过双击主页按钮并单击十字来关闭它?这是终止,然后您的应用程序没有任何内容正在运行。这不是背景!
  • :) 是的,我确实终止了应用程序。当用户进入某个区域时,有没有办法自动唤醒我的应用?
  • 不,但如果你把它留在后台,它会被苹果自动唤醒。所以干脆不要终止它,如果用户终止它,那么它应该不再工作了。
  • @ghazi_jaffary 随时支持/接受,因为您的问题现已得到解答。
【解决方案2】:

在头文件中添加 CLLocationManagerDelegate。 确保你添加了

locationManager.delegate = self;

尝试增加半径并检查。

【讨论】:

  • 是的,我已经做到了。半径是否已经超过 100?
【解决方案3】:

首先增加您为该特定位置提供的半径并再次检查它是否不起作用,然后按照此tutorial 中提供的一些简单步骤,您可以轻松地在您的应用中实施地理围栏。

参考:Apple Documentation

【讨论】:

    【解决方案4】:

    您定义的半径为 15m。那太小了。首先,尝试 50m 或更多。看看地图应用程序,如果你真的进入了那个地区。 此外,我希望您的意思是“发送到后台”,而不是关闭。 确保您已将应用程序设置为允许在后台运行? (通过 plist)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 2012-01-18
      • 2017-04-20
      • 2013-03-30
      • 2017-02-14
      • 2014-07-10
      • 1970-01-01
      相关资源
      最近更新 更多