swift中的Facebook Native Share对话框
Posted
技术标签:
【中文标题】swift中的Facebook Native Share对话框【英文标题】:Facebook Native Share Dialog in swift 【发布时间】:2015-06-23 12:08:00 【问题描述】:我正在尝试创建将在 Facebook 上分享链接的分享按钮。问题是我不想在我的应用程序的分享按钮之前有一个登录按钮,我只需要一个分享按钮。
我认为一种解决方案可能是使用自定义按钮进行登录和共享按钮,并将这些按钮合并为一个。这样,如果用户在单击共享按钮时没有登录,他将被要求登录。然而,在我尝试实现这一目标的过程中,我发现 Native Share Dialog 是更好的解决方案,因为它根本不请求登录。
但是我很难找到任何参考/教程/示例或任何与 swift 一起使用 Native Share Dialog 的内容。 Obj-c上有例子和资料,但我从来没有使用过Obj-c,我对此一无所知。
如果有人有任何示例,或者有人能指出正确的方向,如何在 Swift 中实现 Facebook Native Share Dialog,我会很高兴。
如果没有人有任何在 Swift 上使用自定义分享按钮的例子
【问题讨论】:
您需要先阅读 Facebook 提供的有关 ios SDK 的文档。 我实际上已经阅读了它,但一切都是 Obj-C,我遇到了麻烦。这就是为什么我希望在 Swift 上找到一些东西 【参考方案1】:其实我想出了一个解决办法。
这些代码行将在 Swift 中实现 Facebook Native Share Dialog:
let content: FBSDKShareLinkContent = FBSDKShareLinkContent()
content.contentURL = NSURL(string: self.contentURL)
content.contentTitle = self.contentTitle
content.contentDescription = self.contentDescription
content.imageURL = NSURL(string: self.contentURLImage)
FBSDKShareDialog.showFromViewController(self, withContent: content, delegate: nil)
【讨论】:
【参考方案2】:实际上你不需要自己处理登录,在iOS中如果你使用iOS SDK的UIActivityViewController,iOS会为你处理。
来自文档:
声明 (SWIFT)
init(activityItems activityItems: [AnyObject], applicationActivities applicationActivities: [AnyObject]?)
参数
activityItems 要执行的数据对象数组 活动。数组中对象的类型是可变的和依赖的 在您的应用程序管理的数据上。例如,数据可能 由一个或多个字符串或图像对象组成 当前选择的内容。
这个数组中的对象可以代替实际的数据对象 采用 UIActivityItemSource 协议的对象,例如 UIActivityItemProvider 对象。源和提供者对象充当 在您不想要的情况下代理相应数据 提供该数据,直到需要为止。
这个数组不能为 nil 并且必须包含至少一个对象。 applicationActivity 一个 UIActivity 对象数组,表示 您的应用程序支持的自定义服务。这个参数可能是 无。
代码被截断:
let so:NSURL = NSURL(string:"http://***.com")
let activityVC = UIActivityViewController(
activityItems: ["Some text here...", so],
applicationActivities: nil)
self.navigationController.presentViewController(activityVC,
animated: true,
completion: nil)
您也可以为此使用 Facebook 的 SDK(您需要在项目中添加)。 SDK 也会处理登录。
这里是先决条件:
在您可以从您的应用分享到 Facebook 之前,您需要:
将 iOS 版 Facebook SDK 添加到您的移动开发环境 获取 Facebook 应用 ID,正确配置并链接到您的 iOS 应用 将您的应用 ID 和显示名称添加到应用的 .plist 文件中。链接 FBSDKShareKit.framework 到您的项目中。
这里是 Facebook SDK 页面:
https://developers.facebook.com/docs/sharing/ios
这里是一些用于 URL 共享的代码 sn-p:
let content : FBSDKShareLinkContent = FBSDKShareLinkContent()
content.contentURL = NSURL(string: self.short_string)
content.contentTitle = self.title_text
// ... etc.
let button : FBSDKShareButton = FBSDKShareButton()
button.shareContent = content
【讨论】:
实际上我使用的是 Facebook SDK 4.1,因为我想分享一个链接。直到知道我能够在 fb 上分享一个链接。但是,当我在共享链接之前尝试这样做时,我需要登录,这两个功能位于单独的按钮中,这不是我想要的。出于这个原因,我尝试使用 Facebook 共享对话框,因为它们不要求登录。此外,我不熟悉 Obj-C。但如果你需要上传我的鳕鱼,我可以 @IlirVGruda 您能否提供一些有关此文档的链接,iOS SDK 的 SharingActivityProvider。我的谷歌搜索结果为零。 Iget 错误Use of undeclared type 'FBSDKShareLinkContent'
可能是什么原因?我确实导入了 FacebookShare 模块以上是关于swift中的Facebook Native Share对话框的主要内容,如果未能解决你的问题,请参考以下文章
ios swift facebook登录 fb_mobile_login_native_app_switch_dialog_result 错误
Swift 中的 Facebook 登录管理器“表达式不明确”错误