首页 > 解决方案 > 如何从 Xamarin iOS 中选择和打开可用的导航应用程序?

问题描述

我有以下代码可以通过我的内容页面中的一个按钮单击打开导航应用程序。

var location = new Location(Convert.ToDouble(jobItem.Latitude), Convert.ToDouble(jobItem.Longitude));
var options = new MapLaunchOptions { NavigationMode = NavigationMode.Driving };
await Map.OpenAsync(location, options);

我的安卓手机里有谷歌地图和位智,所以上面的代码确实显示了选择面板,让用户选择使用哪个应用程序没有问题。但是,当它遇到iOS时,即使iPhone中有3个导航应用程序,它也会直接打开Apple Maps而无需任何选择。我试图研究处理 iOS 上的默认导航应用程序设置,但不幸的是,iOS 没有提供任何单一选项来将应用程序设置为默认值,这与 android 不同。我还能做什么?

标签: iosiphonexamarin.formsxamarin.ios

解决方案


您可以使用Xamarin.Essentials:Launcher NuGet 包。

您需要修改代码以使其看起来像下面的伪代码

var supportsWaze = await Launcher.CanOpenAsync("whateverTheWazeUriSchemeIs://");
var supportsGoogleMaps = await Launcher.CanOpenAsync("whateverTheUriSchemeIs://");

然后,您需要为用户提供某种 UI,以便他们根据这些布尔值是否为真来选择地图应用程序。我会使用ActionSheet

然后,您可以使用该await Launcher.OpenAsync方法根据用户所做的任何选择打开正确的 URI。您也可以让他们选择记住这个选择以备后用。

iOS 不允许您覆盖操作系统默认应用程序,但在您自己的应用程序中,您可以选择其他应用程序的启动方式。Google 应用程序就是一个很好的例子。


推荐阅读