Как открыть приложение FB и instagram, нажав на кнопку в Swift

как я могу открыть приложение Facebook и Instagram, нажав на кнопку в swift? Некоторые приложения перенаправляются в приложение Facebook и открывают определенную страницу. Как я могу сделать то же самое?

Я нашел это:

var url = NSURL(string: "itms://itunes.apple.com/de/app/x-gift/id839686104?mt=8&uo=4")

if UIApplication.sharedApplication().canOpenURL(url!) {
  UIApplication.sharedApplication().openURL(url!)
}

но я должен знать, приложение URL. Другие примеры были в ObjectiveC, которого я не знаю =/

6 ответов


взгляните на эти ссылки, это может вам помочь:

https://instagram.com/developer/mobile-sharing/iphone-hooks/

http://wiki.akosma.com/IPhone_URL_Schemes

откройте ссылку facebook с помощью родного приложения Facebook на iOS

в противном случае, есть быстрый пример с Instagram для открытия определенного профиля (псевдоним: johndoe) здесь:

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/")!)
}

обновление для Swift 4 и iOS 10+

хорошо, есть два простых шага для достижения этого в Swift 3:

во-первых, вы должны изменить Info.plist в список instagram и facebook С LSApplicationQueriesSchemes. Просто откройте Info.plist В качестве исходного кода и вставьте это:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>instagram</string>
    <string>fb</string>
</array>

после этого вы можете открыть instagram и facebook приложения с помощью instagram:// и fb://. Вот полный код для instagram и вы можете сделать то же самое для facebook, вы можете связать этот код к любой кнопке у вас есть в качестве действия:

@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)
    }

}

на facebook, вы можете использовать этот код:

let appURL = URL(string: "fb://profile/\(Username)")!

в swift 3;

сначала вы должны добавить это в свою информацию.файл plist

enter image description here

чем вы можете использовать этот код;

    let instagramUrl = URL(string: "instagram://app")
    UIApplication.shared.canOpenURL(instagramUrl!)
    UIApplication.shared.open(instagramUrl!, options: [:], completionHandler: nil)

на основе принятого ответа вот способ сделать это более элегантно с Swift 4

UIApplication.tryURL([
        "instagram://user?username=johndoe", // App
        "https://www.instagram.com/johndoe/" // Website if app fails
        ])

и действительно не забудьте добавить схему, чтобы приложение открылось. Однако даже если вы забудете, что instagram откроется в Safari.

tryUrl-это расширение, подобное представленному здесь:https://stackoverflow.com/a/29376811/704803


вам больше не нужно использовать URL-адрес веб-сайта и приложения. Веб-URL автоматически откроется в приложении, если он есть у пользователя. Instagram или другие приложения реализуют это на своем конце как Универсальные Ссылке

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)
        }
    }
}

в swift 4:

просто изменить appURL и webURL :

twitter://user?screen_name=\(screenName)

instagram://user?screen_name=\(screenName)

facebook://user?screen_name=\(screenName)
  • 'openURL' устарел в iOS 10.0:
let screenName =  "imrankst1221"
    let appURL = NSURL(string: "instagram://user?screen_name=\(screenName)")!
    let webURL = NSURL(string: "https://twitter.com/\(screenName)")!

    if UIApplication.shared.canOpenURL(appURL as URL) {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(appURL as URL, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(appURL as URL)
        }
    } else {
        //redirect to safari because the user doesn't have Instagram
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(webURL as URL, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(webURL as URL)
        }
    }