Xcode快速链接到Facebook页面[关闭]

Posted

技术标签:

【中文标题】Xcode快速链接到Facebook页面[关闭]【英文标题】:Xcode swift link to facebook page [closed] 【发布时间】:2015-03-31 19:15:40 【问题描述】:

我有一个带有按钮的应用程序,该按钮可以打开 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)

【问题讨论】:

【参考方案1】:

问题在于您的 Facebook 网址的格式,因此请注意格式。我使用此扩展程序打开网址。您按照您希望它们尝试打开的顺序为其提供一组 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
            ])

[更新] 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
            
        
    

【讨论】:

我对此完全陌生。如何添加扩展程序?我剪切并粘贴了您编写的内容,导致 Xcode 内部崩溃。 只需新建一个swift文件导入Foundation和UIKit,然后粘贴扩展。扩展被放置在任何类的范围之外。 非常感谢!我只需要弄清楚如何获取我的 Facebook 页面 ID。 使用在线工具获得了 ID。再次感谢您的帮助。 记得将这个添加到您的 plist 中:<key>LSApplicationQueriesSchemes</key> <array> <string>fb</string> </array> 否则在尝试打开“fb://”网址时,您将收到错误“此应用不允许查询方案 fb” ..【参考方案2】:

斯威夫特 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(urls: [
            "fb://profile/116374146706", // App
            "http://www.facebook.com/116374146706" // Website if app fails
            ])

【讨论】:

以上是关于Xcode快速链接到Facebook页面[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

facebook分享图片与链接ios xcode

facebook SDK3.1 和 Xcode 4.5 链接器错误

Xcode facebook登录错误已关闭

链接器命令失败,退出代码 1、XCode 4.5、Facebook SDK 3.1

Facebook 发布链接图片

到 Facebook 页面的深层链接