Xcode swift链接到facebook页面

Xcode swift链接到facebook页面,xcode,facebook,swift,Xcode,Facebook,Swift,我有一个带有按钮的应用程序,可以打开Facebook页面。它检查用户是否安装了Facebook,并应在应用程序中打开该页面。如果未安装,则只需使用Safari打开页面。然而,它不起作用。如果用户安装了Facebook,我怀疑这与错误的地址有关: var fbUrl = NSURL(string: "fb://facebook.com/FacebookPageName")! var fbUrlWeb = NSURL(string: "https://www.faceb

我有一个带有按钮的应用程序,可以打开Facebook页面。它检查用户是否安装了Facebook,并应在应用程序中打开该页面。如果未安装,则只需使用Safari打开页面。然而,它不起作用。如果用户安装了Facebook,我怀疑这与错误的地址有关:

var fbUrl = NSURL(string: "fb://facebook.com/FacebookPageName")!
var fbUrlWeb = NSURL(string: "https://www.facebook.com/FacebookPageName")!

if (UIApplication.sharedApplication().canOpenURL(fbUrl)) {
  // Facebook App installed
  UIApplication.sharedApplication().openURL(fbUrl)
} else {
  // No Facebook App installed
  UIApplication.sharedApplication().openURL(fbUrlWeb)
}

问题在于你的Facebook url的格式,所以请注意格式。我使用这个扩展来打开URL。您按照您希望尝试打开的顺序向其提供URL数组,它首先尝试第一个URL,如果失败,则转到第二个URL,依此类推:

extension UIApplication {
    class func tryURL(urls: [String]) {
        let application = UIApplication.sharedApplication()
        for url in urls {
            if application.canOpenURL(NSURL(string: url)!) {
                application.openURL(NSURL(string: url)!)
                return
            }
        }
    }
}
及供使用:

UIApplication.tryURL([
            "fb://profile/116374146706", // App
            "http://www.facebook.com/116374146706" // Website if app fails
            ])
UIApplication.tryURL(urls: [
            "fb://profile/116374146706", // App
            "http://www.facebook.com/116374146706" // Website if app fails
            ])
[更新]对于Swift 4:

extension UIApplication {
    class func tryURL(urls: [String]) {
        let application = UIApplication.shared
        for url in urls {
            if application.canOpenURL(URL(string: url)!) {
                application.openURL(URL(string: url)!)
                return
            }
        }
    }
}
然后:

UIApplication.tryURL(urls: [
                "fb://profile/116374146706", // App
                "http://www.facebook.com/116374146706" // Website if app fails
                ])
[更新]适用于iOS 10/Swift 5

extension UIApplication {
    class func tryURL(urls: [String]) {
        let application = UIApplication.shared
        for url in urls {
            if application.canOpenURL(URL(string: url)!) {
                if #available(iOS 10.0, *) {
                    application.open(URL(string: url)!, options: [:], completionHandler: nil)
                }
                else {
                    application.openURL(URL(string: url)!)
                }
                return
            }
        }
    }
}

Swift 3

extension UIApplication {
    class func tryURL(urls: [String]) {
            let application = UIApplication.shared
            for url in urls {
                if application.canOpenURL(URL(string: url)!) {
                    //application.openURL(URL(string: url)!)
                    application.open(URL(string: url)!, options: [:], completionHandler: nil)
                    return
                }
            }
        }
}
及供使用:

UIApplication.tryURL([
            "fb://profile/116374146706", // App
            "http://www.facebook.com/116374146706" // Website if app fails
            ])
UIApplication.tryURL(urls: [
            "fb://profile/116374146706", // App
            "http://www.facebook.com/116374146706" // Website if app fails
            ])

我对这个完全陌生。如何添加扩展名?我剪切并粘贴了你写的东西,并在XCODE中造成了内部崩溃。只需制作一个新的Swift文件导入基础和UIKIT,然后粘贴扩展名。扩展被放置在任何类的范围之外。非常感谢!我只需要弄清楚如何获取我的Facebook页面ID。使用了在线工具并获取了ID。再次感谢您的帮助。请记住将此添加到您的plist:
LSApplicationQueriesSchemes fb
否则,在尝试打开“fb://”url时,您将收到错误“此应用程序不允许查询scheme fb”。。