swift中的Facebook Native Share对话



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

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

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

如果有人有任何例子,或者有人能为我指明如何在Swift中实现Facebook Native Share Dialog的正确方向,我很高兴。

如果没有,任何人都有在Swift 上使用自定义共享按钮的例子

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

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

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

来自文档:

申报(SWIFT)

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

参数

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

此数组中的对象可以是采用UIActivityItemSource协议的对象,例如UIActivityItemProvider对象。源和提供程序对象充当在您不需要的情况下为相应数据提供代理以提供该数据,直到需要为止。

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

截取的代码:

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

以下是一些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

最新更新