iOS Facebook ShareLink处理干扰Facebook登录

时间:2016-05-22 10:12:55

标签: ios swift facebook-ios-sdk

我有3个问题,所有问题都围绕着与Facebook API的链接共享。这是我用来分享链接的代码:

let content = FBSDKShareLinkContent()
content.contentURL = NSURL(string: "fb.me app link url")!
content.imageURL = NSURL(string: "image url")         
let messageDialog: FBSDKMessageDialog = FBSDKMessageDialog()
messageDialog.delegate = self
messageDialog.shareContent = content 
if messageDialog.canShow() {
    messageDialog.show()
}

我在AppDelegate.swift中有这个函数来处理传入的共享链接:

func application(app: UIApplication,
                 openURL url: NSURL, options: [String : AnyObject]) -> Bool {

    handleSharedLink(url: url)
    return true
}

以下是3个问题:

  1. 我的应用中也有Facebook登录,AppDelegate中的openURL功能正在干扰它。它在Facebook登录期间被调用,即使我删除handleSharedLink()函数调用并返回true,它也会导致Facebook登录中途停止。如何正确处理此问题,以便我的共享链接处理不会干扰Facebook登录?

  2. 当我使用FBSDKShareLinkContent(上面的代码)发送链接时,我在安装了我的应用程序的手机上的Facebook messenger中点击它,它会打开应用程序并正常工作。但是,当我尝试在没有安装我的应用程序的手机上打开它时,它什么都不做。根据Facebook API文档,如果用户没有安装应用程序,它应该将用户重定向到应用商店,如果我没有弄错的话。如何实现此功能?

  3. 我使用Facebook为我的应用程序创建一个以fb.me开头的应用程序链接。当我使用FBSDKShareLinkContent(上面的代码)共享链接时,它会显示我与之共享的人的fb.me链接。我怎么做到它没有显示?
  4. 对上述3个问题的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

经过大量的实验和重新阅读文档后,我自己想出了答案。对于有类似问题的任何人,您可以通过以下两个步骤解决问题中描述的所有问题。

  1. 将此功能添加到AppDelegate:

    func application(app: UIApplication,
                     openURL url: NSURL, options: [String : AnyObject]) -> Bool {
        //Check if the url has app link data
        let checkUrl = BFURL(inboundURL: url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String)
    
        if checkUrl != nil {
            //Handle incoming shared link
        } else {
            //Take care of handling url for Facebook login
            return FBSDKApplicationDelegate.sharedInstance().application(
                app,
                openURL: url,
                sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String,
                annotation: nil)
        }
    }
    
  2. 在FBSDKShareLinkContent的代码中,不是将contentURL设置为您创建的fb.me网址,而是将其设置为应用网站的网址。在您的应用网站的标题中,添加以下元标记。

    <meta property="al:ios:url" content="app url configured in info.plist"/>
    
    <meta property="al:ios:app_store_id" content="itunes app store id" />
    
    <meta property="al:ios:app_name" content="name of your app" />