iOS Facebook ShareLink 处理干扰 Facebook 登录
Posted
技术标签:
【中文标题】iOS Facebook ShareLink 处理干扰 Facebook 登录【英文标题】:iOS Facebook ShareLink Handling Interfering with Facebook Login 【发布时间】:2016-05-22 10:12:54 【问题描述】:我有 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 个问题:
我的应用程序中也有 Facebook 登录,并且我的 AppDelegate 中的 openURL 功能干扰了它。它在 Facebook 登录期间被调用,即使我删除了 handleSharedLink() 函数调用并返回 true,它也会导致 Facebook 登录中途停止。如何正确处理此问题,以便我的共享链接处理不会干扰 Facebook 登录?
当我使用 FBSDKShareLinkContent(使用上面的代码)发送链接,并在安装了我的应用程序的手机上的 Facebook Messenger 中点击它时,它会打开应用程序并正常工作。但是,当我尝试在没有安装我的应用程序的手机上打开它时,它什么也没做。根据 Facebook API 文档,如果我没记错的话,如果用户没有安装应用程序,它应该将用户重定向到应用程序商店。我怎样才能实现这个功能?
我使用 Facebook 为我的应用创建了一个以 fb.me 开头的应用链接。当我使用 FBSDKShareLinkContent(上面的代码)共享链接时,它会显示我与之共享的人的 fb.me 链接。如何让它不显示?对于上述 3 个问题的任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:经过大量实验并重新阅读文档后,我自己找到了答案。对于任何有类似问题的人,您可以通过以下 2 个步骤解决问题中描述的所有问题。
将此函数添加到您的 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)
在 FBSDKShareLinkContent 的代码中,不要将 contentURL 设置为您创建的 fb.me url,而是将其设置为您的应用网站的 url。在您的应用网站的标题中,添加以下元标记。
<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" />
【讨论】:
以上是关于iOS Facebook ShareLink 处理干扰 Facebook 登录的主要内容,如果未能解决你的问题,请参考以下文章