使用 UIActivityViewController 选择哪些共享操作获取哪些内容

Choose what share actions get what content with UIActivityViewController

我目前正在使用 UIActivityViewController 与其他应用共享 url。这部分工作正常。

但是当我分享到 iMessage、Whatsapp 或 Mail 等应用程序时。我想添加一个字符串。

示例:

Sharing -> airdrop: https://www.google.com

Sharing -> iMessage: "Hi there, checkout this cool website: https://www.google.com"

我尝试通过将 Url 对象和字符串添加到 UIActivityViewController 中来实现,如下所示:

let url = URL(string: "https://www.google.com)
let text = "Hi there, checkout this cool website: \(url)"
let items: [Any] = [url, text]
let controller = UIActivityViewController(
                    activityItems: items,
                    applicationActivities: nil)

DispatchQueue.main.async{self.present(controller, animated: true, completion: nil)}

^不是实际代码,但足以画图

这确实适用于 Airdrop,它会打开 url。
它也适用于 Mail,它使用包含 url.

的字符串

但在 iMessage 中不起作用。 iMessage 将两者结合起来,像这样:

https://www.google.com Hi there, checkout this cool website: https://www.google.com

有没有人对我保留 Airdrop/Mail 等的功能有任何建议,但它也适用于 iMessage?

使用 UIActivityItemSource。 UIActivityItemSource 被告知请求进程的标识符,因此您可以避免将 URL 传递给 Messages 而只传递字符串,这就足够了。