我正在为一个学校进行高级项目,该项目要求我通过他们的电话GPS
坐标持续跟踪用户。我的最终目标是不断用当前用户的位置更新我的Mapsui
地图。
我遇到了如何将数据不断更新为Mapsui
的障碍。如果输入静态GPS
坐标,则该点将正确显示在地图上。
真的,令我烦恼的核心问题是异步功能以及在使用Xamarin.Essentials
获取位置数据时如何正确实现它们。
任何想法或技巧将不胜感激!
答案 0 :(得分:1)
似乎您想在后台跟踪用户的位置。如果您已经阅读过docs有关Xamarin.Essentials:地理位置的信息,则应该做更多的事情。
在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中的项目设置的“功能”选项卡中声明应用程序支持的背景模式。启用“背景模式”选项,会将UIBackgroundModes键添加到应用的Info.plist文件中。
有关iOS中后台执行的更多详细信息,您可以参考此docs
在Android项目中
您可以创建一个background service
。
IntentService
类提供了一种用于在单个后台线程上运行操作的简单结构。这使其可以处理长时间运行的操作,而不会影响用户界面的响应能力。另外,IntentService
不受大多数用户界面生命周期事件的影响,因此它可以在关闭AsyncTask
的情况下继续运行。
有关更多详细信息,请参阅here。