如何从 Xamarin iOS 中选择和打开可用的导航应用程序?
Posted
技术标签:
【中文标题】如何从 Xamarin iOS 中选择和打开可用的导航应用程序?【英文标题】:How to choose and open available navigation app from Xamarin iOS? 【发布时间】:2020-02-04 09:22:48 【问题描述】:我有以下代码可以通过我的内容页面中的一个按钮单击打开导航应用程序。
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 不同。我还能做什么?
【问题讨论】:
【参考方案1】:您可以使用 Xamarin.Essentials: Launcher NuGet 包。
您需要修改代码,使其类似于下面的伪代码
var supportsWaze = await Launcher.CanOpenAsync("whateverTheWazeUriSchemeIs://");
var supportsGoogleMaps = await Launcher.CanOpenAsync("whateverTheUriSchemeIs://");
然后,您需要为用户提供某种 UI,以便他们根据这些布尔值是否为真来选择地图应用程序。我会使用 ActionSheet
然后您可以使用await Launcher.OpenAsync
方法根据用户所做的任何选择打开正确的URI。您也可以让他们选择记住这个选择以供以后使用。
iOS 不允许您覆盖操作系统默认应用程序,但在您自己的应用程序中,您可以选择其他应用程序的启动方式。 Google 应用程序就是一个很好的例子。
【讨论】:
以上是关于如何从 Xamarin iOS 中选择和打开可用的导航应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin iOS 如何获取所有可用的 SysSound 列表?
Xamarin iOS:不打开.xib和.storyboard文件Visual Studio 2017
如何在 Xamarin IOS 自定义渲染器中单击 UITextField Rightview 打开 UIPickerView