How to launch Safari and open URL from iOS app How to launch Safari and open URL from iOS app ios ios

How to launch Safari and open URL from iOS app


Here's what I did:

  1. I created an IBAction in the header .h files as follows:

    - (IBAction)openDaleDietrichDotCom:(id)sender;
  2. I added a UIButton on the Settings page containing the text that I want to link to.

  3. I connected the button to IBAction in File Owner appropriately.

  4. Then implement the following:

Objective-C

- (IBAction)openDaleDietrichDotCom:(id)sender {    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.daledietrich.com"]];}

Swift

(IBAction in viewController, rather than header file)

if let link = URL(string: "https://yoursite.com") {  UIApplication.shared.open(link)}


Swift Syntax:

UIApplication.sharedApplication().openURL(NSURL(string:"http://www.reddit.com/")!)

New Swift Syntax for iOS 9.3 and earlier

As of some new version of Swift (possibly swift 2?), UIApplication.sharedApplication() is now UIApplication.shared (making better use of computed properties I'm guessing). Additionally URL is no longer implicitly convertible to NSURL, must be explicitly converted with as!

UIApplication.sharedApplication.openURL(NSURL(string:"http://www.reddit.com/") as! URL)

New Swift Syntax as of iOS 10.0

The openURL method has been deprecated and replaced with a more versatile method which takes an options object and an asynchronous completion handler as of iOS 10.0

UIApplication.shared.open(NSURL(string:"http://www.reddit.com/")! as URL)


Here one check is required that the url going to be open is able to open by device or simulator or not. Because some times (majority in simulator) i found it causes crashes.

Objective-C

NSURL *url = [NSURL URLWithString:@"some url"];if ([[UIApplication sharedApplication] canOpenURL:url]) {   [[UIApplication sharedApplication] openURL:url];}

Swift 2.0

let url : NSURL = NSURL(string: "some url")!if UIApplication.sharedApplication().canOpenURL(url) {     UIApplication.sharedApplication().openURL(url)}

Swift 4.2

guard let url = URL(string: "some url") else {    return}if UIApplication.shared.canOpenURL(url) {    UIApplication.shared.open(url, options: [:], completionHandler: nil)}