我正在为学校开展一个高级项目,该项目要求我通过手机GPS
坐标持续跟踪用户。我的最终目标是不断Mapsui
用当前用户的位置更新我的地图。我在如何不断将数据更新为Mapsui
. 如果我输入静态GPS
坐标,该点会正确显示在我的地图上。
确实,让我感到困惑的核心问题是异步函数以及如何在使用Xamarin.Essentials
.
任何想法或提示将不胜感激!
我正在为学校开展一个高级项目,该项目要求我通过手机GPS
坐标持续跟踪用户。我的最终目标是不断Mapsui
用当前用户的位置更新我的地图。我在如何不断将数据更新为Mapsui
. 如果我输入静态GPS
坐标,该点会正确显示在我的地图上。
确实,让我感到困惑的核心问题是异步函数以及如何在使用Xamarin.Essentials
.
任何想法或提示将不胜感激!
看来您想在后台跟踪用户的位置。如果您已阅读 有关 Xamarin.Essentials: Geolocation 的文档。您应该做更多的事情。
在 iOS 项目中
1. 在info.plist中添加隐私
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access location when open.</string>
<key>NSLocationAlwaysAndWhenInUsageDescription</key>
<string>This app needs access location when open or in background.</string>
// support iOS 10 and before
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access location when open.</string>
2.对于需要更多执行时间来执行的任务,您必须请求特定的权限才能在后台运行它们而不会被暂停。
对某些类型的后台执行的支持必须由使用它们的应用程序提前声明。您可以从 VS 中项目设置的 Capabilities 选项卡声明您的应用支持的后台模式。启用背景模式选项会将 UIBackgroundModes 键添加到应用的 Info.plist 文件中。
有关 iOS 中后台执行的更多详细信息,您可以参考此文档
在安卓项目中
您可以创建一个background service
.
该类IntentService
为在单个后台线程上运行操作提供了一个简单的结构。这允许它处理长时间运行的操作,而不会影响用户界面的响应能力。此外,anIntentService
不受大多数用户界面生命周期事件的影响,因此它会在可能关闭AsyncTask
.
有关更多详细信息,您可以参考此处。