如何从iPhone应用程序启动另一个应用程序

时间:2012-10-20 11:22:34

标签: iphone objective-c ios mapkit

我正在iPhone应用程序中处理地图应用程序。

我有一个按钮go

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

3 个答案:

答案 0 :(得分: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可以打开网址waze://,则表示您已经拥有该应用,它将启动它。否则,它将启动默认的地图应用。 Safari不会被调用。

答案 1 :(得分:5)

要打开需要致电的应用

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

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

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

希望这会有所帮助。

答案 2 :(得分: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]];
    }
} 

只是提出改善用户体验的建议。