Objective C:
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"link://"]]){
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"link://"]];
}
Deprecated in iOS10:openURL
openURL:
A way to open external links
canOpenURL:
Got some privacy controls in iOS 9 to stop you from querying devices for installed apps.
Now with iOS 10 openURL:options:completionHandler:
is used instead of openURL
Objective C:
Handle completionHandler:
- (void)openScheme:(NSString *)scheme {
UIApplication *application = [UIApplication sharedApplication];
NSURL *URL = [NSURL URLWithString:scheme];
if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) {
[application openURL:URL options:@{}
completionHandler:^(BOOL success) {
NSLog(@"Open %@: %d",scheme,success);
}];
} else {
BOOL success = [application openURL:URL];
NSLog(@"Open %@: %d",scheme,success);
}
}
Without handling completionHandler:
[application openURL:URL options:@{} completionHandler:nil];
Swift 3.0:
func open(scheme: String) {
if let url = URL(string: scheme) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:], completionHandler: {
(success) in print("Open \(scheme): \(success)")
})
} else {
let success = UIApplication.shared.openURL(url)
print("Open \(scheme): \(success)")
}
}
}
Options: UIApplicationOpenURLOptionUniversalLinksOnly
Objective C:
NSDictionary *options = @{UIApplicationOpenURLOptionUniversalLinksOnly : @YES};
[application openURL:URL options:options completionHandler:nil];
Swift:
let options = [UIApplicationOpenURLOptionUniversalLinksOnly : true]
UIApplication.shared.open(url, options: options, completionHandler: nil)