根据选择分享不同的内容 activity - UIActivityController

Sharing different content based on selected activity - UIActivityController

目前,每当用户想要使用 UIActivityController 分享图像时,我都会发送图像和文本。 这在 email 和 gmail 上工作正常,但它在 whatsapp 或 Skype 上变得混乱(仅发送文本)。 因此,如果用户选择 activity 作为 whatsapp 或 Skype,我想做的是共享图像 url 和文本。这可能吗?

我搜索了这个问题,发现你应该子 class UIActivityItemProvider 并实现我所做的 UIActivityItemSource 的方法,但我无法获得回调实现的方法。

我已经实现了这些方法 activityViewControllerPlaceholderItem:activityViewController:itemForActivityType: 但我没有收到回电。

只需创建 UIActivityItemProvider 的子类并覆盖 item 属性 即可提供您的自定义 activity items,即

class CustomActivityItemProvider: UIActivityItemProvider
{
    override var item: Any{
        switch self.activityType!
        {
        case UIActivityType.postToFacebook:
            return "Hello"
        default:
            return "Whatever"
        }
    }
}

使用它:

let activityItem = CustomActivityItemProvider(placeholderItem: "")
let activityViewController = UIActivityViewController(activityItems: [activityItem], applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)

此外,您可以仅自定义由 Apple 公开供开发人员使用的那些 UIActivityTypeUIActivityTypes 参考:https://developer.apple.com/documentation/uikit/uiactivitytype