如何检查设备iPhone是否在Xamarin.Forms中设置了App Google Maps?
我有一个问题是使用Google地图打开地图:
我的设备iPhone已经设置了应用谷歌地图,但我的应用程序按下按钮链接到地图应用程序打开地图。 设备打开Safari,不要打开Google地图。
我试试这种方式: 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);