Swift
のボタンをタップしてFacebookおよびInstagramアプリを開くにはどうすればよいですか?一部のアプリは、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
にありましたが、わかりません= /
これらのリンクを見てください、それはあなたを助けることができます:
https://instagram.com/developer/mobile-sharing/iphone-hooks/
http://wiki.akosma.com/IPhone_URL_Schemes
iOSのネイティブFacebookアプリでFacebookリンクを開く
それ以外の場合は、特定のプロファイル(ニックネーム:johndoe)を開くためのInstagramの簡単な例があります。
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+の更新
OK、Swift 3:
まず、Info.plist
を変更して、instagram
とfacebook
をLSApplicationQueriesSchemes
でリストする必要があります。ソースコードとしてInfo.plist
を開き、これを貼り付けます。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>instagram</string>
<string>fb</string>
</array>
その後、instagram://
およびfb://
を使用して、instagram
およびfacebook
アプリを開くことができます。これが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)")!
実際には、WebとアプリのURLを使用する必要はもうありません。ユーザーが持っている場合、Web URLはアプリで自動的に開きます。 Instagramまたは他のアプリは、これを niversal 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)
}
}
}
In 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)
}
}
ここで受け入れられた答えに基づいて、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/7048