问题标签 [clregion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
460 浏览

ios - iOS 区域监控重用项目问题

我有一个项目,我在使用区域监控时取得了不同程度的成功,大部分情况下它都有效,但没有我希望的那么准确,但很快发现它不应该是完全准确的,这很好,只是物理测试这个很难。然而,他们希望在一天内完成一个完整的用户界面整体大厅。所以这就是我所做的。

我拿了旧项目,复制并重命名了它,捆绑 ID 和所有我认为需要它的地方,以使其本质上成为一个不同的项目。然后我创建了一个故事板,因为我之前使用的是 xib 文件。然后更改启动程序,使其使用情节提要而不是预先存在的 xib 文件。一切都很好。具有新的界面和基本相同的代码。

问题...

这些区域永远不会触发......永远,即使位置服务正在工作,因为我使用位置服务来告诉我我是否在一个半径范围内,但栅栏回调 API 永远不会关闭。然后我在多个设备上对其进行了测试。最后其中一个触发了......但是低并且看它是旧应用程序,它触发栅栏没问题。而新的没有。我什至无法理解我做错了什么会导致这种情况。我什至使用 api 确实失败了并且确实成功了方法,它说围栏没有问题。

另一个令人烦恼的问题是,如果我使用 GPX 文件来模拟位置,栅栏会在代码中触发……我必须说令人沮丧的事情。

有什么建议么?如果需要,将提供代码示例。

0 投票
0 回答
323 浏览

ios - CLCircularRegion - notifyOnEntry 的任意值

我有一组由 CLLocationManager 监控的 CLCircularRegions。在我的地图视图控制器的 viewDidLoad 中,我遍历monitoredRegions位置管理器并创建对应于 CLCircleRegions 的 MKCircle 覆盖。每个区域(以及相应的地图叠加层)的中心坐标和半径始终是正确的,并且永远不会改变它们的预期值。notifyOnEntry但是,每次我重新加载此视图时,似乎都会在 YES 和 NO 之间随意更改;仅有时这些区域会反映此属性的预期值。即使其他值保持不变,这个值是否会改变?在将区域传递给位置管理器后,我不会以任何方式操作这些区域。

0 投票
1 回答
2426 浏览

ibeacon - iBeacon 百货商店场景 - 测距与监控

因此,我们正在尝试使用 iBeacons 组合一个场景,我认为我们陷入了测距和后台监控之间的差异,现在我不确定我们想要做什么是可能的。

我们有 500 家商店要部署 iBeacons。信标的目的是通过通知和优惠券(有时)向客户致意。我们想要做的是使用单个 UUID,主要是商店编号,次要是商店类型(普通商店与儿童商店。儿童商店可以连接到普通商店)。理想情况下,一旦找到带有我们 UUID 的 iBeacon,我们希望我们的应用程序从我们的网站中提取特定于主要编号(商店编号)的 XML 文件,显示通知欢迎消息(可能说明“我们为您提供优惠券”取决于 xml 文件的内容),并将 xml 文件数据保存到应用程序,以便用户在打开应用程序时可以检索优惠券。这一切似乎都可以在前台应用程序中实现,但我们似乎很难让它在后台工作。我所描述的是否可能,我是否应该考虑另一种方法来做到这一点?

谢谢

0 投票
1 回答
115 浏览

ios - 如何指定 iOS 应用运行的区域

我目前有一个报告道路危险的应用程序,并向相关地方当局发送电子邮件。有没有办法使用 Xcode 中的区域管理器功能来指定应用程序将在其中运行的矩形,但是如果用户在该区域之外访问它,那么应用程序将不会发送电子邮件。

0 投票
1 回答
5985 浏览

ios - 不推荐使用的 CLRegion 方法 - 如何获取半径?

我正在使用geocodeAddressString:completionHandler:返回 CLPlacemarks 数组的方法。我必须得到纬度、经度、助记名称和半径。虽然获得前 3 个很容易:

我现在不知道如何获得半径,因为placemark.region.radius已弃用。任何想法现在改用什么?我在文档中找不到足够有趣的东西。

0 投票
1 回答
1401 浏览

ios - ios7中的CLLocationManager停止工作

CLLocationManager从用户第一次进入应用程序时开始。我正在像这样初始化它:

我正在使用地理围栏。

我在我的 .plist 中定义了required background modes.

如果我使用 gpx 文件在模拟器中测试应用程序,它工作正常。到现在为止还挺好。

但是,我在这两个链接中阅读:

从后台任务启动 iOS 7 中的位置管理器

后台定位服务在 iOS 7 中不起作用

也就是说iOS7,当位置在几分钟内没有改变时,CLLocation就会进入睡眠状态。

我的问题是:

我根本不打电话didUpdateLocation,我只想要didEnterRegion, 或didExitRegion。从理论上讲,即使应用程序被杀死或用户位置在最后一小时内没有改变然后决定移动,它会起作用吗?

0 投票
1 回答
3584 浏览

ios - 使用什么来代替 iOS 7 中已弃用的 regionMonitoringAvailable?

regionMonitoringAvailable 在 iOS 7 中已弃用。我们应该改用什么?

0 投票
1 回答
3186 浏览

ios - 监控多个信标区域不起作用,但开发人员说有可能吗?想法?(见我的代码)

这是我的代码:

澄清一下,“_serviceUUIDs”是一个包含五个 UUID 的 NSStrings 的 NSArray。我正在使用 Locate iBeacons 进行测试,发现要添加的最后一个区域是唯一被检测到的区域。它似乎也是唯一被监控的。我通过检查"_locationManager.monitoredRegions"确定了这一点。

这里有许多线程说可以监视多个信标区域。有人对为什么它不适合我有想法吗?谢谢!

0 投票
1 回答
3747 浏览

ios - 位置管理器 stopMonitoringForRegion 不工作

我正在开发的一个应用程序在后台运行时使用用户的当前位置设置区域监控。当应用程序再次激活时,我试图停止对该区域的监控,但它似乎在大多数情况下间歇性地工作,导致它无法按预期运行。当应用程序在后台运行时,我开始监视该区域,当我记录详细信息时它工作正常:

这导致以下日志:

  • “创建区域:regionFor:[此处为实纬度,此处为实经度],半径:100”

当应用程序唤醒时,我调用以下函数:

这导致大约 75% 的时间出现以下日志:

  • “即将停止对 1 个区域的监控”
  • “停止后,我们目前正在监控 1 个区域”

我很少得到看似成功的东西:

  • “即将停止对 1 个区域的监控”
  • “停止后,我们目前正在监控 0 个区域”

我已经尝试了几件事,但没有成功。我正在创建的区域是 CLCircularRegions,它继承自 CLRegion,因此无论如何都应该可以工作,但是在 for 循环中,我已将 CLRegion 更改为 CLCircularRegion,但没有任何效果。我最初使用 [locationManager monitorRegions] 本身,它返回一个 NSSet,所以我认为使用 allObjects 函数来获取数组可以解决问题,但它没有。

我还认为在枚举时改变数组可能是一个问题,但是我在 SO 上看到的唯一其他帖子说上面对他们有用......

我错过了什么吗?

0 投票
1 回答
271 浏览

ios - iOS 区域监控:我的应用程序崩溃了还是预期的?

我的应用在后台运行时使用区域监控。一旦应用程序进入后台,我就会获取他们的位置(我已经在前台拥有)并在其周围创建一个区域并开始监视该区域。

我正在使用可可伐木工进行日志记录,并且在 applicationDidFinishLaunchingWithOptions 内部设置了日志记录,一旦我这样做了,我就会记录“开始记录...”。通常,我希望仅在应用程序第一次打开时看到这一点,或者如果由于某种原因应用程序崩溃并且我必须重新启动它并查看日志以确定原因。今天在开车时进行测试,我注意到在 5 小时内我的文件中有 15 个“开始记录”实例,总是在我创建区域后几分钟,就像这样(我删除了位置特定信息):

  • 晚上 7:17:创建区域:regionFor:[xxx,-xxx],半径:200
  • 晚上 7 点 25 分:开始记录......

(在这里我做了几个快速的位置更新,看看它们是否移动并向服务器发送请求,这大约需要 1 秒,然后创建另一个区域来监控......)

  • 晚上 7:25:创建区域:regionFor:[xxx,-xxx],半径:200
  • 晚上 7 点 44 分:开始记录......

(在这里我做了几个快速的位置更新,看看它们是否移动并向服务器发送请求,这大约需要 1 秒,然后创建另一个区域来监控......)

  • 晚上 7:44:创建区域:regionFor:[42.77846,-71.42591],半径:100
  • 晚上 8 点 04 分:开始记录......

在我删除与位置更新相关的日志和我认为不相关的服务器请求之间有一些日志......我只是想知道为什么在这些点调用了应用程序DidFinishLaunching,因为我只在应用程序时看到它被调用在被用户强行终止,手机本身重新启动或应用程序崩溃后第一次启动,而不是从后台唤醒,这是我从我读过的内容中对区域监控的期望。这是预期的行为还是我的应用程序崩溃然后以某种方式被操作系统重新启动?

需要注意的一件事是,我可能会开始执行后台任务来处理位置更新并发送请求,因为我确信有时位置更新可能需要一点时间,而请求也可能需要一段时间,所以我需要超过大约 10 秒的时间来处理 didExitRegion 更新,但这似乎与我看到的这种看似奇怪的行为无关。任何帮助将不胜感激。