【问题标题】:iOS support 3rd party navigationiOS 支持第三方导航
【发布时间】:2015-12-31 13:50:06
【问题描述】:

在 iOS 8 中(我记不得也是 7),您可以设置导航的默认应用程序。我目前正在实现一个按钮,允许用户通过以下方式打开 Apple 地图并获取前往某个位置的路线:

- (IBAction)getDirections:(id)sender {

CLLocationCoordinate2D endingCoord = storeLocation;
MKPlacemark *endLocation = [[MKPlacemark alloc] initWithCoordinate:endingCoord addressDictionary:nil];
MKMapItem *endingItem = [[MKMapItem alloc] initWithPlacemark:endLocation];
endingItem.name = @"Cubes Pizza Sunway";

NSMutableDictionary *launchOptions = [[NSMutableDictionary alloc] init];
[launchOptions setObject:MKLaunchOptionsDirectionsModeDriving forKey:MKLaunchOptionsDirectionsModeKey];

[endingItem openInMapsWithLaunchOptions:launchOptions];

}

这很好用,可以按我的预期启动。但是,如果用户安装了 Google 地图怎么办?苹果会自动给用户一个选项吗?还是我需要实现一个活动表并检测所有导航应用程序,然后找出每个应用程序的 URL 架构?)

我将如何实施这样的事情?

这是同一个问题:iOS - run 3rd party navigation app from code 但它已经有一年了,想知道这个功能是否由 APPLE 实现,如果不是,如何实现检查应用程序是否安装等。

【问题讨论】:

    标签: ios objective-c iphone mapkit


    【解决方案1】:

    Google Maps has a URL scheme 可用于启动应用程序。 Here is how you request directions。如他们页面上所述,您可以通过以下方式检查是否安装了 Google Maps 应用:

    UIApplication.sharedApplication().canOpenURL(NSURL(string: "comgooglemaps://")!)

    您还需要将 comgooglemaps 添加到 Info.plist 中的 LSApplicationQueriesSchemes 字典中,以便能够在 iOS 9 上使用 canOpenURL: 方法,如 this blog post 中所述。

    我相信你想到的“默认导航应用”实际上是a way for the user to manually switch other apps once they're in the built-in Maps app

    【讨论】:

    • 为什么我们不安装 googlemaps sdk 并在我们的应用程序中显示在 web 视图中,我们也将拥有完全的控制权
    • 我没有使用过 Google Maps SDK,但我猜它不会有完整的应用体验(尤其是导航),所以链接到应用对用户来说可能是更好的体验,但这取决于我猜的单个应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2019-10-16
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多