How to launch another app from an iPhone app

Deadly 提交于 2019-11-30 09:21:05

Try to do this way :

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]];

Here, canOpenURL allows you to test if the Waze app is installed on your iPhone. if iPhone can open the url waze:// it means you already have the app and it will launch it. Otherwise it will launch the default Maps app. Safari won't be called.

To open an app you need to call

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

To find all the url, go to this page: http://handleopenurl.com/

For waze in particular, http://handleopenurl.com/scheme/waze

hope this helps.

Note that on iOS you can also navigate to Google Maps -- and pass along the query string or geopoint. Here's one example of navigating to a specific geopoint:

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]];
    }
} 

Just a suggestion to enhance the user experience.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!