如何通过点击Swift

时间:2015-04-27 17:43:10

标签: ios facebook swift 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,我不知道= /

9 个答案:

答案 0 :(得分:26)

看看这些链接,它可以帮到你:

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

http://wiki.akosma.com/IPhone_URL_Schemes

Open a facebook link by native Facebook app on 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/")!)
}

答案 1 :(得分:22)

  

Swift 4和iOS 10 +的更新

好的,在Swift 3中有两个简单的步骤来实现这一点:

首先,您必须修改Info.plist以列出instagramfacebook LSApplicationQueriesSchemes。只需打开Info.plist作为源代码,然后粘贴:

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

之后,您可以使用instagramfacebook打开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)")!

答案 2 :(得分:8)

在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)

答案 3 :(得分:6)

实际上,您不再需要使用网络和应用程序URL。如果用户拥有该网址,它将在应用程序中自动打开。 Instagram或其他应用最终将其实现为Universal Link

快捷键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)
        }
    }
}

答案 4 :(得分:5)

在swift 4中:

  

只需更改 appURL webURL

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

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

facebook://user?screen_name=\(screenName)
  
      
  • &#39;的OpenURL&#39;在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)
        }
    }

答案 5 :(得分:3)

基于接受的答案,这里是使用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

答案 6 :(得分:2)

在swift5中使用此

   guard let instagram = URL(string: "https://www.instagram.com/yourpagename") else { return }
   UIApplication.shared.open(instagram)

答案 7 :(得分:0)

SwiftUI版本

添加到Info.plist

首先,您必须修改Info.plist以列出instagramfacebookLSApplicationQueriesSchemes。只需打开Info.plist作为源代码,然后将其粘贴:

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

当您要打开Facebook应用并直接转到Facebook页面时,请使用页面ID。这是一个链接,您可以在其中找到它们:https://www.facebook.com/help/1503421039731588

方案

fb:// profile-在用户的个人资料 OR 页面上打开Facebook应用

fb:// friends –在好友列表中打开Facebook应用

fb:// notifications –将Facebook应用打开到通知列表(注意:此URL似乎存在一个错误。“通知”页面打开。但是,无法导航到Facebook中的其他任何地方应用)

fb:// feed-将Facebook应用程序打开到新闻源

fb:// events –在事件页面打开Facebook应用

fb:// requests –在请求列表中打开Facebook应用

fb:// notes –在“笔记”页面打开Facebook应用

fb:// albums –打开Facebook应用到相册列表 来源:https://stackoverflow.com/a/10416399/8642838

SwiftUI代码版本

    Button(action: {
        let url = URL(string: "fb://profile/<PAGE_ID>")!
        let application = UIApplication.shared
        // Check if the facebook App is installed
        if application.canOpenURL(url) {
            application.open(url)
        } else {
            // If Facebook App is not installed, open Safari with Facebook Link
            application.open(URL(string: "https://de-de.facebook.com/apple")!)
        }
    }, label: {
        Text("Facebook")
    })

答案 8 :(得分:0)

从你的应用程序打开 Instagram 或 Facebook 页面,它对我有用 只是为了使用 www.facebook.com/userwww.instagram.com/user

之类的链接

这样做时,Instagram 和 Facebook 应用程序会自动打开。