ios - 自动检测所有已安装的 map 导航应用程序

标签 ios swift directions turn-by-turn

在iOS Apple Maps应用程序中,选择目标时,Apple Maps为您提供了使用任何已安装的映射应用程序的选项。

苹果 map 是如何做到这一点的?有没有办法在我自己的应用程序中实现类似的功能?

一种方法是获取最流行的导航应用程序列表,检查它们是否支持 url 方案,并使用以下方法检查是否安装了其中的任何一个:

if ([[UIApplication sharedApplication] canOpenURL:url]) {
        // mapping app is installed ...
}

但是,这并不可靠,因为 url 方案可能会改变,而且一些 map 导航应用程序不支持 url 方案。

提前致谢。

最佳答案

这是您要找的吗?

哎呀,可能不是您要找的东西,但这就是 Apple Maps 的做法。也许在该文档的某处(或深入挖掘)您可能会找到一种方法。

来自 Apple 的文档:

iOS apps that are able to display point-to-point directions can register as routing apps and make those directions available to Maps and other apps.

https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/AddingCapabilities.html#//apple_ref/doc/uid/TP40012582-CH26-SW9

关于ios - 自动检测所有已安装的 map 导航应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44347120/

相关文章:

ios - "Could Not Find Developer Disk Image"Xcode 7.1

ios - xcode 7.3 : Could not insert new outlet connection and deleting DerivedData doesnt work

ios - 使用 Mapbox Direction API 生成路线时避免坐标

ios - 如何将@Environment(\.colorScheme) 设置回系统/自动?

android - 将经度和纬度传递给 google directions api

javascript - 谷歌地图路线 V3 : Multiple directions on a map

ios - 有没有办法为 iOS 播放器 (JWplayer) 设置 .skinActive (“#fefa01” ) 属性

iphone - iOS - 如何不在屏幕上显示导航栏?

ios - Swift ios如何通过推送页面将数据传递到其他 View

ios - fatal error : unexpectedly found nil while unwrapping an Optional value while filtering