// canOpenURL method verifies if there is any app which can handle indicated URL scheme.
// Swift
UIApplication.sharedApplication().canOpenURL(_ aUrl: NSURL)
// Objective-C
[[UIApplication sharedApplication] canOpenURL:(NSURL *)aUrl];
// openURL method tries to open a resource located by URL. YES/true if it was opened otherwise NO/false.
// Swift
UIApplication.sharedApplication().openURL(_ aUrl: NSURL)
// Objective-C
[[UIApplication sharedApplication] openURL:(NSURL *)aUrl];
Parameter | Meaning |
---|---|
aUrl | a NSURL instance which stores a built-in or custom scheme string |
In iOS9 and above your app must list any URL schemes it will want to query. This is done by adding LSApplicationQueriesSchemes
to Info.plist
iOS has built-in support for the tel
, http
/https
,sms
, mailto
, facetime
schemes. It also supports http–based URLs for Youtube
, Maps
and iTunes
apps.
Examples of built-in URL schemes:
tel: tel://123456890
or tel:123456890
http: http://www.google.com
facetime: facetime://[email protected]
mailto: mailto://[email protected]
sms: sms://123456890
or sms:123456890
Youtube: https://www.youtube.com/watch?v=-eCaif2QKfA
Maps:
Using address: http://maps.apple.com/?address=1,Infinite+Loop,Cupertino,California
Using coordinates: http://maps.apple.com/?ll=46.683155557,6.683155557
iTunes: https://itunes.apple.com/us/artist/randy-newman/id200900
Note: Not all special characters are supported in tel
scheme (for example *
or #
). This is done because of security concerns to prevent users from unauthorized redirect of calls, so in this case Phone
app won't be opened.