How to open fb and instagram app by tapping on button in Swift
Update for Swift 4 and iOS 10+
OK, there are two easy steps to achieve this in Swift 3:
First, you have to modify Info.plist
to list instagram
and facebook
with LSApplicationQueriesSchemes
. Simply open Info.plist
as a Source Code, and paste this:
<key>LSApplicationQueriesSchemes</key><array> <string>instagram</string> <string>fb</string></array>
After that, you can open instagram
and facebook
apps by using instagram://
and fb://
. Here is a complete code for instagram and you can do the same for facebook, you can link this code to any button you have as an Action:
@IBAction func InstagramAction() { let Username = "instagram" // Your Instagram Username here let appURL = URL(string: "instagram://user?username=\(Username)")! let application = UIApplication.shared if application.canOpenURL(appURL) { application.open(appURL) } else { // if Instagram app is not installed, open URL inside Safari let webURL = URL(string: "https://instagram.com/\(Username)")! application.open(webURL) }}
For facebook
, you can use this code:
let appURL = URL(string: "fb://profile/\(Username)")!
Take a look at these links, it can help you:
https://instagram.com/developer/mobile-sharing/iphone-hooks/
http://wiki.akosma.com/IPhone_URL_Schemes
Open a facebook link by native Facebook app on iOS
Otherwise, there is a quick example with Instagram for opening a specific profile (nickname: johndoe) here:
var instagramHooks = "instagram://user?username=johndoe"var instagramUrl = NSURL(string: instagramHooks)if UIApplication.sharedApplication().canOpenURL(instagramUrl!) { UIApplication.sharedApplication().openURL(instagramUrl!)} else { //redirect to safari because the user doesn't have Instagram UIApplication.sharedApplication().openURL(NSURL(string: "http://instagram.com/")!)}
You actually don't need to use a web and app URL anymore. The web URL will automatically open in the app if the user has it. Instagram or other apps implement this on their end as a Universal Link
Swift 4
func openInstagram(instagramHandle: String) { guard let url = URL(string: "https://instagram.com/\(instagramHandle)") else { return } if UIApplication.shared.canOpenURL(url) { if #available(iOS 10.0, *) { UIApplication.shared.open(url, options: [:], completionHandler: nil) } else { UIApplication.shared.openURL(url) } }}