9

我正在我的 iPhone 应用程序中开发地图应用程序。

我有一个按钮go

当用户在此方法中单击此按钮时,我想检查用户是否已waze在他的 iphone 上安装了该应用程序。如果是,则导航到 waze 应用程序,否则打开 iPhone 的默认地图应用程序。

4

3 回答 3

21

尝试这样做:

NSString *wazeAppURL = @"waze://";
NSString *mapsAppURL = @"maps://";

BOOL canOpenURL = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:wazeAppURL]];

NSString *url = canOpenURL ? wazeAppURL : mapsAppURL;
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

在这里,canOpenURL您可以测试您的 iPhone 上是否安装了 Waze 应用程序。如果 iPhone 可以打开该 url waze://,则意味着您已经拥有该应用程序,它将启动它。否则它将启动默认的地图应用程序。不会调用 Safari。

于 2012-10-20T17:37:08.260 回答
5

要打开应用程序,您需要调用

BOOL canOpenURL = [[UIApplication sharedApplication] 
                       canOpenURL:[NSURL URLWithString:@"app://"]];
if ( canOpenUrl ) [[UIApplication sharedApplication] 
                       openURL:[NSURL URLWithString:url]];

要查找所有 url,请转到此页面:http ://handleopenurl.com/

特别是对于 waze,http://handleopenurl.com/scheme/waze

希望这可以帮助。

于 2012-10-22T10:04:43.583 回答
1

请注意,在 iOS 上,您还可以导航到 Google 地图——并传递查询字符串或地理点。这是导航到特定地理点的一个示例:

if (self.mapView.userLocation.location) {
    NSString *urlAsString = [NSString stringWithFormat:@"comgooglemaps://?q=%f,%f", self.mapView.userLocation.location.coordinate.latitude, self.mapView.userLocation.location.coordinate.longitude];
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlAsString]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlAsString]];
    }
} 

只是一个提升用户体验的建议。

于 2015-02-24T20:12:34.380 回答