如何检查设备iPhone是否在Xamarin.Forms中设置了App Google Maps?

我有一个问题是使用Google地图打开地图:

我的设备iPhone已经设置了应用谷歌地图,但我的应用程序按下按钮链接到地图应用程序打开地图。 设备打开Safari,不要打开Goog​​le地图。

我试试这种方式: Xamarin Forms – Maps – 可以通过按钮调用Google Maps吗?

但是在线代码:

var canOpenNative = UIApplication.SharedApplication.CanOpenUrl(NSUrl.FromString("comgooglemaps-x-callback://")); 

我不能使用库:` 使用Foundation ;

(构建应用程序将无法使用库。)

我尝试这种方式: Xamarin.Forms – 找不到“基础”

但是当构建应用程序时,我无法使用库基础构建。

那么,还有其他方法,如何检查设备iPhone在Xamarin.Forms中设置应用谷歌地图?

谢谢!

如果您尝试使用共享代码中的Foundation程序集,那么您只能从iOS平台特定项目中访问它。

您可以使用依赖服务从共享代码中调用特定于平台的代码。 请按照以下步骤创建依赖服务,以检查iPhone是否安装了Google地图:

第1步:在共享代码中创建一个接口

 public interface IMapService { bool HasGoogleMapAvailable(); } 

第2步:现在在您的平台特定项目中; 现在是你的iOS项目。 创建一个将实现您创建的接口的服务:

 [assembly: Dependency(typeof(MapService))] namespace WorkingWithMaps.iOS { public class MapService:IMapService { public MapService() { } public bool HasGoogleMapAvailable() { var result=UIApplication.SharedApplication.CanOpenUrl(NSUrl.FromString("comgooglemaps-x-callback://")); return result; } } } 

第3步:在共享代码中,您可以使用该依赖关系服务:

 IMapService mapService = DependencyService.Get(); var isInstalled = mapService.HasGoogleMapAvailable(); Console.WriteLine("Google Map is installed :" + isInstalled); 

第4步:实际打开地图; 您可以使用Device.OpenUri,它将向用户显示弹出窗口,以便从设备上的所有已安装的地图应用程序中选择任何一个:

 var uri = new Uri("http://maps.google.com/maps?saddr=Google+Inc,+8th+Avenue,+New+York,+NY&daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York&directionsmode=transit"); Device.OpenUri(uri);