web-dev-qa-db-fra.com

Comment ouvrir l'application fb et instagram en appuyant sur le bouton dans Swift

Comment puis-je ouvrir Facebook et Instagram en tapotant sur un bouton dans Swift? Certaines applications redirigent vers l'application Facebook et ouvrent une page spécifique. Comment puis-je faire la même chose?

Je l'ai trouvé:

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

mais je dois connaître l'application URL. D'autres exemples étaient dans ObjectiveC, que je ne connais pas = /

18
user4809833

Jetez un coup d'œil à ces liens, cela peut vous aider:

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

http://wiki.akosma.com/IPhone_URL_Schemes

Ouvrir un lien Facebook via l'application Facebook native sur iOS

Sinon, il existe un exemple rapide avec Instagram pour ouvrir un profil spécifique (pseudo: johndoe) ici:

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

Mise à jour pour Swift 4 et iOS 10+

OK, il y a deux étapes faciles pour y parvenir dans Swift 3:

Tout d'abord, vous devez modifier Info.plist pour répertorier instagram et facebook avec LSApplicationQueriesSchemes. Ouvrez simplement Info.plist en tant que code source et collez ceci:

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

Ensuite, vous pouvez ouvrir les applications instagram et facebook en utilisant instagram:// et fb://. Voici un code complet pour instagram et vous pouvez faire la même chose pour facebook, vous pouvez associer ce code à n’importe quel bouton de votre 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)
    }

}

Pour facebook, vous pouvez utiliser ce code:

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

Dans Swift 3;

D'abord, vous devriez ajouter ceci sur votre Info.plist

 enter image description here

Alors vous pouvez utiliser ce code;

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

En fait, vous n'avez plus besoin d'utiliser d'URL Web et d'application. L'URL Web s'ouvrira automatiquement dans l'application si l'utilisateur en dispose. Instagram ou d'autres applications implémentent cela de leur côté en tant que 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)
        }
    }
}
5
DoesData

Dans Swift 4:

Il suffit de changer appURL et webURL

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

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

facebook://user?screen_name=\(screenName)
  • 'openURL' est obsolète dans 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)
        }
    }
3
Md Imran Choudhury

Sur la base de la réponse acceptée, voici comment procéder de manière plus élégante avec Swift 4.

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

Et souvenez-vous vraiment d'ajouter le schéma pour permettre à l'application de s'ouvrir. Cependant, même si vous oubliez qu'instagram s'ouvrira dans Safari.

TryUrl est une extension similaire à celle présentée ici: https://stackoverflow.com/a/29376811/704803

2
Pomo-J