Как открыть приложение 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
чем вы можете использовать этот код;
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)
}
}