Messenger 未出现在 branch.io 的共享 Sheet (UIActivityViewController) 中

Messenger not appearing in Share Sheet (UIActivityViewController) of branch.io

我正在尝试通过 branch.io 分享 sheet 分享一些东西:

let shareText = "Some Share Text"

let linkProperties = BranchLinkProperties()
linkProperties.feature = "Some"
linkProperties.addControlParam("$desktop_url", withValue: desktopURLString)
linkProperties.addControlParam("$android_url", withValue: androidURLString)

let object = BranchUniversalObject(canonicalIdentifier: "some.cannonical.identifier")
object.title = "Some Title"
object.imageUrl = someImageURL
object.contentDescription = "Some Content Description"
object.addMetadataKey("some_id", value: identifier)

object.showShareSheet(with: linkProperties, 
              andShareText: shareText,
                      from: self, 
                completion: completion)

一切都很好,除了 Facebook Messenger 应用程序没有显示为共享选项 sheet。既不在建议的选项中,也不在 'More' 下。实现这一目标需要什么?

我为默认的 UIActivityViewController 找到了以下问题/答案。那如何与 branch.io 一起使用呢?

当您在 iOS 上通过共享 sheet 进行共享时 - 无论您使用 Branch 共享 sheet 还是 UIActivityViewController - 共享选项的选择不是您可以定义的,它是由用户定义。

可以通过打开共享 Sheet 然后滚动显示的应用程序列表,直到看到“...”(更多)选项来访问用于设置哪些应用程序将出现在列表中的界面.点击此按钮,您将看到可以在 phone:

上共享的应用程序列表

每个应用程序都会有一个滑块 - 如果为特定应用程序启用了滑块,该应用程序将出现在列表中。

启用 Facebook Messenger 以在用户的​​ phone 上分享不是您作为开发人员可以在您的应用程序中执行的操作。

您提到当您点击“更多”按钮时甚至无法使用 Messenger 应用程序。这让我觉得很奇怪;如果安装了 Facebook Messenger,我检查过的每台设备都有一个选项。也许尝试删除并重新安装 Facebook Messenger。

我再次深入研究这个问题,终于找到了麻烦制造者。如果我将分支 link 属性的 feature 设置为包含 a space 的字符串值,Messenger 会在共享 sheet 中消失。示例:

    let properties = BranchLinkProperties()
    properties.feature = "Share News"   //does not work, messenger does not appear in the share sheet
    //properties.feature = "Share_News" //works, messenger appears in share sheet
    object.showShareSheet(with: properties, andShareText: "Some Share Text", from: viewController, anchor: UIBarButtonItem()) { (activityType, completed) in
        if (completed) {
            print(String(format: "Branch TestBed: Completed sharing to %@", activityType!))
        } else {
            print("Branch TestBed: Link Sharing Cancelled\n")
        }
    }

feature 用作 Branch 中 URL 的参数,然后将其提供给共享扩展。虽然我认为这是 Branch 中的一个编码问题,但似乎 Messenger 共享扩展没有以与其他应用程序相同的方式处理 URL。 'broken url' 确实可以与其他共享扩展一起使用。希望这可以帮助别人!我暂时将功能的名称更改为没有 space 的名称。