Facebook原生分享对话框在Swift中的实现

5
我正在尝试创建一个分享按钮,用于在Facebook上分享链接。问题是我不想在应用程序中在分享按钮之前放置登录按钮,我只需要一个分享按钮。
我认为一种解决方案可能是使用自定义按钮来实现登录和分享按钮,并将这些按钮合并为一个按钮。这样,如果用户在单击分享按钮时没有登录,他将被要求登录。但是,在我试图实现这一点的过程中,我发现本地共享对话框是更好的解决方案,因为它根本不需要登录。
但我很难找到任何关于如何在Swift中使用本地共享对话框的参考/教程/示例或任何内容。有关Obj-c的示例和材料,但我从未使用过Obj-c,也不知道任何关于它的事情。
如果有人有任何示例或可以指导我如何在Swift中实现Facebook本地共享对话框,请告诉我。
如果没有,是否有任何使用自定义共享按钮的Swift示例?

你需要先阅读Facebook提供的有关iOS SDK的文档。 - Nitin Gohel
我实际上已经读过,但是所有的东西都是Obj-C,而我对那方面遇到了麻烦。这就是为什么我希望能找到一些关于Swift的东西。 - Ilir V. Gruda
2个回答

23

实际上我找到了解决方案。

这些代码将在Swift中实现Facebook原生分享对话框:

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)

0

实际上,您不需要自己处理登录,在iOS中,如果您正在使用iOS SDK的UIActivityViewController,iOS会为您处理。

来自文档:

声明(SWIFT)

init(activityItems activityItems: [AnyObject], applicationActivities applicationActivities: [AnyObject]?) 

参数

activityItems 执行操作的数据对象数组。数组中的对象类型是可变的,取决于应用程序管理的数据。例如,数据可能包含一个或多个字符串或图像对象,表示当前选择的内容。

在这个数组中,对象可以是采用UIActivityItemSource协议的对象,如UIActivityItemProvider对象。源和提供者对象充当代理,用于相应数据的情况下,您不想在需要之前提供该数据。

此数组不能为空,并且必须至少包含一个对象。applicationActivities 表示应用程序支持的自定义服务的UIActivity对象数组。此参数可以为空。

代码片段:

let so:NSURL = NSURL(string:"http://stackoverflow.com")
let activityVC = UIActivityViewController(
            activityItems: ["Some text here...", so],
            applicationActivities: nil)
self.navigationController.presentViewController(activityVC, 
   animated: true, 
   completion: nil)

你也可以使用Facebook的SDK来实现这个功能(需要在你的项目中添加)。此外,SDK将处理登录。

以下是先决条件:

在您的应用程序中分享到Facebook之前,您需要:

将Facebook SDK for iOS添加到您的移动开发环境中 获取一个已正确配置并链接到您的iOS应用程序的Facebook应用ID 将您的应用程序ID和显示名称添加到您的应用程序的.plist文件中。将FBSDKShareKit.framework链接到您的项目中。

这里是Facebook SDK页面:

https://developers.facebook.com/docs/sharing/ios

这里是一些用于URL分享的代码片段:

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,因为我想分享一个链接。到目前为止,我已经能够在Facebook上分享链接。但是当我尝试在分享链接之前登录时,这两个功能被放在不同的按钮中,这不是我想要的。因此,我正在尝试使用Facebook Share Dialogs,因为它们不需要登录。此外,我不熟悉Obj-C。但是如果您需要上传我的代码,我可以提供。 - Ilir V. Gruda
@IlirVGruda,您能否提供一些关于iOS SDK的SharingActivityProvider的文档链接?我的谷歌搜索没有找到任何结果。 - sirvon
我遇到了错误 Use of undeclared type 'FBSDKShareLinkContent',可能是什么原因呢? 我已经引入了FacebookShare模块。 - bibscy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接