Как проверить, что устройство iPhone настроило приложение Google Maps в Xamarin.Forms? - PullRequest
0 голосов
/ 06 сентября 2018

У меня проблема с открытыми картами с Google Maps:

На моем устройстве в iPhone установлено приложение «Карты Google», но мое приложение при нажатии кнопки связывается с приложением «Карты», чтобы открывать карты. Устройство открывает Safari, не открывайте Google Maps.

Я пробую таким образом: Xamarin Forms - Карты - Можно ли вызвать Карты Google с кнопки?

Но в строке:

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

Я не могу использовать библиотеку: ` с использованием Foundation ;

(Приложение сборки не может использовать библиотеку.)

И я пытаюсь так: Xamarin.Forms - «Фонд» не может быть найден

Но при сборке приложения я не могу собрать с библиотекой Foundation .

Итак, есть ли другие способы, как проверить, что устройство iPhone устанавливает приложение Google Maps в Xamarin.Forms?

Спасибо!

1 Ответ

0 голосов
/ 07 сентября 2018

Если вы пытаетесь использовать сборку 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...