我正在尝试创建分享按钮,这将在Facebook上分享链接。问题是我不希望在我的应用程序中的分享按钮之前有一个登录按钮,我只需要一个共享按钮。
我认为一种解决方案可能是使用自定义按钮登录和共享按钮,并将这些按钮合并为一个。这样,如果用户在点击分享按钮时没有登录,则会要求他登录。然而,在我试图实现这一目标的过程中,我发现Native Share Dialog是更好的解决方案,因为它根本不需要登录。
但是我很难找到任何引用/教程/示例或任何使用swift的Native Share Dialog。 Obj-c上有例子和东西,但我从未使用过Obj-c,我对此一无所知。
如果有人有任何例子,或者任何人都指出我如何在Swift中实现Facebook Native Share Dialog,那我就是在跳跃。
如果不是剂量,任何人都有在Swift上使用自定义共享按钮的任何示例
答案 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