CLMonitor从CLLocationManager升级的正确方法

问题描述 投票:0回答:1

我正在尝试将地理定位功能从 CLLocationManager 升级到 CLMonitor。主要问题是我应该如何将 MonitoredRegions 从 CLLocationManager 移动到 CLMonitor。由于 CLLocationManager 中的 ios17 功能(启动/停止监控)已被弃用,因此如果同时我不应该使用 StopMonitoring 将其从 CLLocationManager 中删除,我应该如何移动该条件。

CLMonitor 没有在 CLLocationManager 中添加条件。当我向 CLMonitor 添加某些内容时,然后在 CLLocationManager 中,我们也会在 MonitoredRegions 中看到这种情况,但具有自动生成的名称 (some_ generated_chars@identifier)

c# ios geolocation maui ios17
1个回答
0
投票

弃用并不意味着它不起作用,只是有一种新的/更好的方法来做某事。弃用的功能最终会消失,但这通常需要数年时间。

您可以自行决定是转向

CLMonitor
还是继续使用
CLLocationManager
。如果您的应用程序的目标版本早于 iOS 17,您可能可以坚持使用
CLLocationManager
而不是使用多个代码路径。

CLMonitor

 采用的委托模式相比,
CLLocationManager
提供了更现代、基于闭包的界面。这更加“Swifty”,并且它也适用于 Swift async/await - 我不确定这是否会产生很大的影响,因为您可能是根据问题标签使用 Maui 的。

但是,如果您确实想更改代码以在 iOS 17 上使用

CLMonitor
,您将采用以下方法

  • 在 iOS 17 设备上启动时,在设置
    CLMonitor
    之前,检查用户默认值中的布尔值 - 类似于
    geoFenceUpdated
  • 如果是
    true
    ,则不执行任何操作。
  • 如果是
    false
    ,则创建一个
    CLLocationManager
    ,删除所有地理围栏并将
    geoFenceUpdated
    设置为
    true
  • 最后,创建您的
    CLMonitor
    并创建任何所需的地理围栏。
© www.soinside.com 2019 - 2024. All rights reserved.