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 游戏请求

Swift 中的 Facebook 登录管理器“表达式不明确”错误

在 react-native 和 firebase 3.1 中登录 Facebook

纯在 Swift 中的 React Native 应用程序

React Native Swift 模块中的回调函数