我具有以下代码,可通过在内容页面上单击任一按钮来打开Navigation App。
var location = new Location(Convert.ToDouble(jobItem.Latitude), Convert.ToDouble(jobItem.Longitude));
var options = new MapLaunchOptions { NavigationMode = NavigationMode.Driving };
await Map.OpenAsync(location, options);
我的Android手机中有Google Maps和Waze,因此上面的代码确实显示了选择面板,并允许用户选择要使用的应用程序,这没有问题。但是,当遇到iOS时,即使iPhone中有3个导航应用程序,它也会立即打开Apple Maps,而没有任何选择。我曾尝试研究如何处理iOS上的默认导航应用程序设置,但不幸的是,iOS与Android不同,没有提供任何将应用程序设置为默认设置的选项。我还能做什么?
您可以使用Xamarin.Essentials: Launcher NuGet程序包。
您需要修改代码以使其类似于下面的伪代码
var supportsWaze = await Launcher.CanOpenAsync("whateverTheWazeUriSchemeIs://");
var supportsGoogleMaps = await Launcher.CanOpenAsync("whateverTheUriSchemeIs://");
然后,您需要为用户提供某种UI,以便他们根据这些布尔值是否为true选择映射应用程序。我会使用ActionSheet
然后,您可以根据用户做出的选择使用await Launcher.OpenAsync
方法打开正确的URI。您也可以为他们提供一个选项,以便以后记住该选择。
iOS不允许您覆盖操作系统默认应用程序,但是您可以在自己的应用程序中选择如何启动其他应用程序。 Google应用程序就是一个很好的例子。