Facebook本地共享对话框在swift中

时间:2015-06-23 12:08:01

标签: ios facebook swift facebook-graph-api facebook-sdk-4.0

我正在尝试创建分享按钮,这将在Facebook上分享链接。问题是我不希望在我的应用程序中的分享按钮之前有一个登录按钮,我只需要一个共享按钮。

我认为一种解决方案可能是使用自定义按钮登录和共享按钮,并将这些按钮合并为一个。这样,如果用户在点击分享按钮时没有登录,则会要求他登录。然而,在我试图实现这一目标的过程中,我发现Native Share Dialog是更好的解决方案,因为它根本不需要登录。

但是我很难找到任何引用/教程/示例或任何使用swift的Native Share Dialog。 Obj-c上有例子和东西,但我从未使用过Obj-c,我对此一无所知。

如果有人有任何例子,或者任何人都指出我如何在Swift中实现Facebook Native Share Dialog,那我就是在跳跃。

如果不是剂量,任何人都有在Swift上使用自定义共享按钮的任何示例

2 个答案:

答案 0 :(得分:22)

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

这些代码行将在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)

答案 1 :(得分:0)

您实际上不需要自己处理登录,如果您使用iOS SDK UIActivityViewController,iOS将为您处理。

来自文档:

声明(SWIFT)

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

<强>参数

  

activityItems要执行的数据对象数组   活动。数组中的对象类型是可变的和依赖的   关于您的应用程序管理的数据。例如,数据可能   由一个或多个表示的字符串或图像对象组成   目前选择的内容。

     

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

     

此数组不能为nil且必须至少包含一个对象。   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之前,您需要:

     

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

这是Facebook SDK页面:

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

这是一些用于网址共享的代码段:

let content : FBSDKShareLinkContent = FBSDKShareLinkContent()
content.contentURL = NSURL(string: self.short_string)
content.contentTitle = self.title_text
// ... etc.

let button : FBSDKShareButton = FBSDKShareButton()
button.shareContent = content