问题标签 [region-monitoring]
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.
ios - Swift 中显着变化的定位服务与标准定位服务
我有一个支持后台监控的应用程序。为了让我的应用程序能够注册设备的后台移动,我必须调用startMonitoringSignificantLocationChanges()
. 但是,在我的代码中的某个时刻,我还必须调用startUpdatingLocation()
.
我的问题是,如果我调用startMonitoringSignificantLocationChanges()
并稍后在我调用的代码中调用startUpdatingLocation()
,是否会覆盖重要的监控?具体来说,如果我终止我的应用程序,我的位置管理器是否仍会收到有关重大位置更改的更新?
swift - CoreLocation 地理围栏未按预期工作,仅显示以前的地理围栏和过去的标识符。不更新
我正在尝试添加第二个区域。那个 Region2 没有出现,所以在我调试时我删除了我从 Region2 中拥有的所有内容,并将 Region2 的坐标放入我为 Region1 拥有的坐标中(按预期工作)。但是地理围栏从来没有移动过位置(它们在整个城市,没有重叠,它们的半径只有 100m)。当我在模拟器中移动我的位置时,即使我已经在城市中设置了 Region1 地理围栏,模拟器仍然会在我创建的原始地理围栏处显示“输入:这个地方”。
所以我继续调试 - 当我将 Region1 的标识符更改为“TEST TEST”时,它仍然会打印出“This Place”,即使我的任何其他文件中都没有“This Place”。以前有人发生过这种情况吗?如果是这样,你是如何解决的?
我使用 locationManager 函数 didExit/didEnterRegion 并打印出“Entered: (region.identifer)”或“Exited: (region.identifier)”只是为了测试我是进入还是退出该区域。
编辑:我尝试注释掉这整个代码块,即使我这样做了,模拟器仍然显示“输入:这个地方”。我不是从代码中的其他任何地方调用它。
ios - 有时当应用程序被杀死时,iOS 15 不会在后台唤醒 Xamarin Forms iOS 应用程序
我遇到了 Xamarin Forms (iOS) 应用程序的问题,该应用程序在后台执行 BLE 信标扫描(应用程序终止状态)。
目标是在用户进入信标区域时唤醒应用程序。这个应用程序在 iOS 12,13 和 14 上运行得非常顺利。当我将我的 iPhone 更新到 iOS 15 的那一天,后台检测/DidRangeBeacons 函数由于某种原因在终止状态下停止执行。假设如果我今天启动应用程序,进入区域并离开,一切正常,并且可以正常进行 3-4 次测试。如果我第二天来这个地区,应用程序将不会在第 2 天或第 3 天被唤醒。我必须重新启动手机才能让它再次工作,但这不是用户想要做的事情。
有谁知道 iOS15 在 iOS 15 中的信标检测方面是否有任何重大变化。
感谢您的帮助!
ios - 在应用程序进入终止状态后立即启动区域监控
我在我的 iOS 应用程序中使用区域监控来在每次我的应用程序终止时获取位置更新,并且在我的应用程序关闭后,服务会在 20-30 分钟后启动,我想在应用程序关闭后立即启动服务. 我如何做到这一点以及我必须做些什么?任何帮助将不胜感激,谢谢。这是我的 AppDelegate.swift 代码,可以更好地理解这个问题的问题。
我看到的有助于在应用程序终止时实现后台位置的链接如下:
- https://developer.apple.com/documentation/uikit/app_and_environment/scenes/preparing_your_ui_to_run_in_the_background/about_the_background_execution_sequence
- https://developer.apple.com/documentation/corelocation/monitoring_the_user_s_proximity_to_geographic_regions
- https://developer.apple.com/documentation/uikit/app_and_environment/responding_to_the_launch_of_your_app/about_the_app_launch_sequence
ios - 仅在应用程序关闭/暂停时进行区域监控/地理围栏
只有当我的应用程序被用户或系统暂停时,我才想在 iOS 中使用地理围栏(也称为区域监控)。这是因为我已经实现了后台位置更新以在应用程序未暂停时获取位置数据。我已经尝试过使用系统默认值并检查是否存在我在应用程序暂停时创建和删除的文件,但仅在应用程序处于暂停或未运行状态时启用区域监控并没有成功。
ios - iOS didEnterRegion 和应用程序终止时视图控制器和其他对象的实例化
我的理解是,当一个iOS应用进入后台时,应用会运行一段时间,最终会被挂起,而在后台可以继续运行任务。然后,在没有任何活动的情况下,后台的应用程序将被挂起,但仍保留在内存中,但系统会在内存不足的事件中清除它。
当应用程序暂停时,它会停止执行代码。用户可以通过从主屏幕向上滑动来终止应用程序。当应用程序被用户挂起、清除或终止时,包括视图控制器在内的所有对象都会从内存中删除,并且无法从 UIApplication 对象接收更新。一个例外是区域更新,当应用程序处于后台、挂起或终止时,appDelegate 将获取该更新,并将“激活”应用程序以处理事件。
我也了解无论应用程序的状态如何,区域对象都会保留在内存中。因此,在进入一个区域时,appDelegate 可以处理在应用程序可能处于的任何状态下进入的区域。
我正在开发一个使用区域监控的应用程序。我已经将 didEnterRegion 和 didExitRegion CLLocationManagerDelegate 函数放在了 appDelegate 中,在那里我还设置并启动了位置服务。我有一个用于 UI 报告进入/退出区域活动的 MasterViewContoller,包括一个 processRegionEvent() 函数和一个 NSObject 类 Comm,它通过在 sendHttp() 函数中发送一个 http 帖子来处理进入/退出事件。这个 Comm 对象在 MasterviewController 中被实例化,如下所示:
并且 MasterViewController 在 appDelegate 中被引用,如下所示:
在 appDelegate 我有 didEnterRegion 和 didExitRegion 函数:
只要应用程序不在后台或已被终止 - 例如由用户手动或由系统在后台运行一段时间,这将按预期工作。但是一旦应用程序终止或进入后台,viewController 或 Comm 类都不会始终响应。有时他们会回应,有时没有——这就是我试图隔离和解决的问题。
看起来即使 appDelegate “激活”并响应区域事件,这并不意味着应用程序及其对象已完全加载并准备好响应事件和函数调用。
当使用区域监控时,确保相关对象(例如 viewController 和其他类)被实例化并能够在应用程序处于后台或终止时响应 appDelegate 拾取的区域更改的首选方法是什么?是否有必要将整个代码放在 appDelegate 中?