【发布时间】:2021-02-10 17:42:47
【问题描述】:
我正在我的 xamarin 应用程序中使用 CrossGeolocator.Current.StartListeningAsync 方法,以便能够在 iOS 的后台收听位置更新。
我正在使用 Essentials 请求权限。
在第一次运行时,我们获得位置许可(仅限应用程序)和使用要素的位置,然后我们使用 StartListeningAsync for ios 来跟踪应用程序在后台或前台的位置。
当回调被点击时,我们会收到一个弹出窗口,说这个应用程序使用后台位置,并为您提供使用它或更改回仅在应用程序中使用选项的选项。在选择任何选项时,回调永远不会完成并且后续代码不会运行。
这是我获得使用时的权限然后开始收听后得到的弹出窗口:
在手动设置权限后的后续运行中,回调起作用。
Xamarin 表单版本:5.0.0.1931 Xamarin 基本版本:1.6.1 地理定位器插件版本:4.6.2-beta 代码示例:
private async Task StartListening()
{
if (CrossGeolocator.Current.IsListening)
return;
try
{
var settings = new ListenerSettings
{
ActivityType = ActivityType.Other,
DeferLocationUpdates = true,
DeferralDistanceMeters = 15,
DeferralTime = TimeSpan.FromSeconds(10),
ListenForSignificantChanges = false,
PauseLocationUpdatesAutomatically = false,
AllowBackgroundUpdates = true,
};
await CrossGeolocator.Current.StartListeningAsync(TimeSpan.FromSeconds(15), 5, true, settings);
CrossGeolocator.Current.PositionChanged += PositionChanged;
CrossGeolocator.Current.PositionError += PositionError;
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
【问题讨论】:
-
您好,在开始收听位置更新之前,您需要获得许可。如果权限好,则调用
StartListening方法。
标签: xamarin xamarin.forms xamarin.ios