Как выбрать и открыть доступное навигационное приложение от Xamarin iOS? - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть следующий код для открытия приложения навигации одним нажатием кнопки на моей странице содержимого.

var location = new Location(Convert.ToDouble(jobItem.Latitude), Convert.ToDouble(jobItem.Longitude));
var options = new MapLaunchOptions { NavigationMode = NavigationMode.Driving };
await Map.OpenAsync(location, options);

В моем телефоне android есть Google Карты и Waze, поэтому приведенный выше код показать панель выбора и позволить пользователю выбирать, какое приложение использовать, и это не проблема. Однако, когда это соответствует iOS, оно сразу открывает Apple Maps без какого-либо выбора, хотя в iPhone есть 3 навигационных приложения. Я попытался исследовать, чтобы иметь дело с настройкой приложения навигации по умолчанию на iOS, но, к сожалению, iOS не предоставил ни одной опции для установки приложения по умолчанию в отличие от android. Что еще я могу сделать?

1 Ответ

0 голосов
/ 04 февраля 2020

Вы можете использовать пакет Xamarin.Essentials: Launcher NuGet.

Вам потребуется изменить код, чтобы он выглядел примерно так, как показано ниже: псевдокод

var supportsWaze = await Launcher.CanOpenAsync("whateverTheWazeUriSchemeIs://");
var supportsGoogleMaps = await Launcher.CanOpenAsync("whateverTheUriSchemeIs://");

Затем вам нужно будет предоставить пользователю какой-то пользовательский интерфейс, чтобы он мог выбрать картографическое приложение, основываясь на том, что эти логические значения истинны. Я бы использовал ActionSheet

Затем вы можете использовать метод await Launcher.OpenAsync, чтобы открыть правильный URI на основе любого выбора, сделанного пользователем. Вы также можете предложить им запомнить этот выбор на потом.

iOS не позволит вам переопределить приложения по умолчанию для ОС, но в вашем собственном приложении вы можете выбрать способ запуска других приложений. Приложения Google являются хорошим примером этого.

...