我有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文档,如果用户没有安装应用程序,它应该将用户重定向到应用商店,如果我没有弄错的话。如何实现此功能?
对上述3个问题的任何帮助将不胜感激。
答案 0 :(得分: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)
}
}
在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" />