点击此处,详细了解 iOS 版 Facebook SDK。
本指南详细介绍如何通过 iOS 应用将内容分享到 Facebook。用户通过您的应用分享时,相关内容会在其时间线及其好友的动态中显示。
将分享添加到您的应用前,您需要执行以下操作:
.plist
文件中。请注意,该理由必须能让人轻松看懂。FBSDKShareKit.framework
链接到您的项目。应用不应预填写任何分享内容。这不符合 Facebook 开放平台政策,请参阅开发者政策。
iOS 版 SDK 入门指南每种内容类型都有一个您可以用于表示该内容类型并且符合 SharingContent
的界面。对内容建模后,向符合 Sharing
或使用给定 ShareDialog
类的应用添加分享界面。
用户将链接通过您的应用分享到 Facebook 时,系统会同时包含所分享的链接和 contentURL
。使用 ShareLinkContent
模型构建链接的分享内容。
以下示例说明如何触发分享:
guard let url = URL(string: "https://developers.facebook.com") else { // handle and return } let content = ShareLinkContent() content.contentURL = url let dialog = ShareDialog( viewController: self, content: content, delegate: self ) dialog.show()
注意:如果您的应用分享的是指向 iTunes 或 Google Play 商店的链接,我们不会发布您在分享中指定的任何图片或说明,而会发布通过网络爬虫直接从应用商店抓取的一些应用信息,其中可能不包括图片。要预览指向 iTunes 或 Google Play 的链接分享,请在分享调试工具中输入网址。
用户可以使用分享对话框或自定义界面,将照片从您的应用分享到 Facebook:
使用 SharePhotoContent
模型构建照片的分享内容。
func imagePickerController( _ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] ) { guard let image = info[.originalImage] as? UIImage else { // handle and return return } let photo = SharePhoto( image: image, userGenerated: true ) var content = SharePhotoContent() content.photos = [photo] // use the content }
借助分享对话框或您专属的自定义界面,用户可以使用您的应用将视频分享到 Facebook:
使用 FBSDKShareVideoContent
模型构建视频的分享内容。如需了解完整的属性清单,请参阅 FBSDKShareVideoContent
参考文档。
func imagePickerController( _ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] ) { let video: ShareVideo if #available(iOS 11, *) { guard let videoAsset = info[.phAsset] as? PHAsset else { return } video = ShareVideo(videoAsset: videoAsset) } else { guard let url = info[.referenceURL] as? URL else { return } video = ShareVideo(videoURL: url) } }
借助分享对话框,用户可以使用您的应用向 Facebook 分享同时包含照片和视频的内容。请注意以下事项:
使用 ShareMediaContent
模型构建多媒体分享内容。
let photo = SharePhoto(...) let video = ShareVideo(...) var content = ShareMediaContent() content.media = [photo, video]
通过构建模型处理内容后,您可以触发“分享”或“消息”对话框。
在 iOS 中,Facebook 提供用于触发分享的原生按钮。
实施“分享”按钮后,用户可将内容分享到自己的 Facebook 时间线、好友的时间线或小组中。“分享”按钮将调用分享对话框。要在视图中添加“分享”按钮,请将下列代码片段添加到您的视图:
var button = FBShareButton() button.shareContent = content // Add button to view
用户可以使用“发送”按钮,以私密方式向好友和使用 Facebook Messenger 应用的联系人发送照片、视频和链接。“发送”按钮将调用消息对话框。要在视图中添加“发送”按钮,请将下列代码片段添加到您的视图:
var button = SendButton() button.shareContent = content // Add button to view
如果未安装 Messenger 应用,“发送”按钮将被隐藏。要检查“发送”按钮能否在当前设备上显示,可使用 SendButton
属性 isImplicitlyDisabled
:
要使用 Facebook 构建的分享体验,您需要如以上内容建模部分中所述定义您的内容,然后调用分享对话框。例如,要使用分享对话框分享链接:
guard let url = URL(string: "https://developers.facebook.com") else { // handle and return } let content = ShareLinkContent() content.contentURL = url let dialog = ShareDialog( viewController: self, content: content, delegate: self ) dialog.show()
在旧版本的 iOS 版 SDK 中,您的应用必须先检查设备是否安装了原生 Facebook 应用,然后才可打开分享对话框。若未安装 Facebook 应用,则您必须自行提供代码,才能调用回退对话框。
现在,SDK 会自动检查设备上是否安装了原生 Facebook 应用。如果未安装,SDK 会将用户切换到默认浏览器并打开动态发布对话框。
如果已安装原生 Facebook 应用,用户会看到 iOS 分享表,而不会切换到原生 iOS 版 Facebook 应用。
消息对话框会切换到原生 iOS 版 Messenger 应用,并在发布帖子后将控制权交还您的应用。
MessageDialog(content: content, delegate: delegate).show()
注意:iPad 当前不支持消息对话框。
iOS 包括原生分享表,允许用户将状态更新、照片、视频和链接发布到 Facebook,并且支持设置帖子的分享对象和在帖子中圈出地点。Facebook SDK 支持使用此原生控件;当您调用 Facebook 分享对话框时,用户会在大多数情况下获得此体验。
使用 iOS 分享表需要遵守开发者政策,包括第 2.3 条,即规定应用不可以在分享表中预先填写内容。这意味着应用不能使用未由应用用户输入的内容预先填写分享表的 initialText 字段。
此 API 还使用和 Facebook SDK 的其他部分一样的样式块。要显示原生 iOS 分享对话框,请使用:
let dialog = ShareDialog( viewController: self, content: content, delegate: nil ) dialog.mode = .shareSheet dialog.show()
请注意,需要 viewController
参数才能显示分享表。
您可以指定一个话题标签,让它随分享的照片、链接或视频一同显示。这个话题标签还会显示在分享对话框中,因此用户在发布之前可决定是否将它删除。
以下示例说明如何为链接分享添加话题标签。
let content = ShareLinkContent() guard let url = URL(string: "https://developers.facebook.com") else { return } content.contentURL = url content.hashtag = Hashtag("#MadeWithHackbook")
借助应用链接,您可让用户通过从应用发布的 Facebook 帖子链接回您的应用。
当用户点击从应用发布的 Facebook 帖子时,会打开您的应用,甚至可以链接到应用内的特定内容。
使用模拟器在应用程序中测试分享时,如果尝试分享视频或照片,您将收到报错。这是因为您需要安装提供分享对话框的 iOS 版 Facebook。我们不为模拟器提供此类支持。
分享链接时不需要安装 iOS 版 Facebook,因此,此测试用例可行。要测试其他分享情形,请设置安装了 iOS 版 Facebook 的实际测试设备。