Если вы пытаетесь использовать сборку 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<IMapService>();
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);