分享到 iOS 和 Android 版 Messenger

如果使用 4.29.0 或以上版本的 iOS 或 Android 版 Facebook SDK 开发应用,您可以让用户将应用中的链接和媒体分享到 Messenger。用户向 Messenger 分享内容时,您可通过来源链接触发聊天功能插件。您的聊天功能插件将显示在分享界面的更多部分。

如需了解详情,请参阅以下各部分:

若要实现分享到网页版 Messenger 的功能,请参阅分享到网页版 Messenger

分享类型

Facebook SDK 提供以下几种分享类型:

  • 链接分享(与现有链接分享一样,但带有 pageID,因此可以知晓其来源)
  • 照片(不知来源)

下表列出了“分享到 Messenger”支持的所有分享类型以及是否需要提供公共主页或应用编号。

分享类型 是否需要提供公共主页编号? 应用方式

链接分享

可选

  • 不包含来源的链接
  • 包含来源的链接

照片

不支持

  • 照片
  • 来自图库的照片

关联应用编号和公共主页编号

开发者可在分享流程中指明公共主页编号,这样当人们通过分享 SDK 将应用内容分享到 Messenger 时,系统即会将此公共主页视为内容的来源。而公共主页管理员可控制哪些应用可以将其公共主页作为分享来源,以防出现伪造来源的情况。要授权某个应用将其公共主页作为分享来源,管理员需要先关联应用编号和公共主页编号。

如要关联应用编号和公共主页编号:

  1. 前往公共主页的设置
  2. 点击 Messenger 开放平台部分。
  3. 前往通用设置中的关联应用部分。
  4. 输入应用编号,然后点击关联按钮。
  5. 如果此应用先前不在已订阅应用表格中,则将显示在该表中,并带有相应的“分享来源”身份。如果应用已在此表中,则系统将为该应用添加全新的“分享来源”身份。

主页管理员也可以移除相关权限,不让应用使用分享来源。

如要移除某个具体应用的“分享来源”身份:

  1. 已订阅应用表格中找到这个应用,点击“身份”栏中对应的下拉菜单。
  2. 点击“分享来源”,即可取消选择此身份。
  3. 如果应用只有“分享来源”一个身份,则应用所在的行将从表格中移除。如果身份不止一个,则系统将保留应用所在行,但会取消选择“分享来源”行。

注册网域

如果在分享 SDK 中使用了网址按钮,并且希望在 Messenger 中打开网址时能启用 Messenger 功能插件,则必须先注册对应的网址网域,才能顺利实现分享。

要注册网域,请执行以下操作:

  1. 查看公共主页。
  2. 前往设置 > 高级消息功能
  3. 将网域添加到网域白名单字段中。

有关详细信息,请参阅 Messenger 功能插件 SDK — 必须将网域加入白名单

iOS

前提条件

向应用添加“分享到 Messenger”功能前,请先完成下述步骤:

  • iOS 版 Facebook SDK 添加到您的移动开发环境中
  • 使用 Messenger 开放平台工具配置您的 Facebook 应用编号,并将该编号与公共主页编号关联。
  • 将应用编号、显示名称和需要获取照片访问权限的理由添加到应用的 .plist 文件中。请注意,该理由必须能让人轻松看懂。
  • 关联 FBSDKShareKit.framework 与您的项目。

详情请参阅入门指南:iOS 版 Facebook SDK

此外,也请确保您的应用在 MessageDialog 实例上调用了 canShowvalidate,以确定用户是否在其设备上安装了兼容版本的 Messenger。

限制

不支持 quote 属性。

链接分享示例

guard let url = URL(string: "https://newsroom.fb.com/") else {
    preconditionFailure("URL is invalid")
}

let content = ShareLinkContent()
content.contentURL = url

let dialog = MessageDialog(content: content, delegate: self)

do {
    try dialog.validate()
} catch {
    print(error)
}

dialog.show()

照片分享示例

// Assumes your assets contain an image named "puppy"
guard let image = UIImage(named: "puppy") else {
    return
}

let photo = SharePhoto(image: image, userGenerated: true)
let content = SharePhotoContent()
        content.photos = [photo]

let dialog = MessageDialog(content: content, delegate: self)

// Recommended to validate before trying to display the dialog
do {
    try dialog.validate()
} catch {
    print(error)
}

dialog.show()

视频分享示例

// Assuming you have a URL for a PHAsset
let video = ShareVideo(videoURL: assetURL)
let content = ShareVideoContent()
content.video = video

let dialog = MessageDialog(content: content, delegate: self)

// Recommended to validate before trying to display the dialog
do {
    try dialog.validate()
} catch {
    print(error)
}

dialog.show()

Android

前提条件

按照在 Android 平台分享中的说明进行操作,摘要如下:

此外,也请确保您的应用调用 MessageDialog.canshow({template}),以了解用户是否在其设备上安装了兼容版本的 Messenger。