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