web-dev-qa-db-ja.com

Swift=のボタンをタップしてFBとInstagramアプリを開く方法

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にありましたが、わかりません= /

21
user4809833

これらのリンクを見てください、それはあなたを助けることができます:

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

Swift 4およびiOS 10+の更新

OK、Swift 3:

まず、Info.plistを変更して、instagramfacebookLSApplicationQueriesSchemesでリストする必要があります。ソースコードとして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)")!
25
Ibrahim

In Swift 3;

まず、これをInfo.plistに追加する必要があります

enter image description here

このコードを使用できるよりも。

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

実際には、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)
        }
    }
}
7
DoesData

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

ここで受け入れられた答えに基づいて、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

3
Pomo-J