如何以编程方式获取 iOS 上粘贴板内容的来源

问题描述

在 iOS 14 上,当用户在另一个应用上复制/粘贴内容时,会显示带有粘贴板内容来源应用名称通知

On this example,the text is pasted to Notes app from Safari app

是否可以通过编程方式获取此信息?

例如,如果用户在 Safari 上复制链接并将其粘贴到我的应用中,应用是否可以知道粘贴板内容来自 Safari?

我在 UIPasteboard 或 UIPasteConfiguration 文档中没有找到类似的内容

解决方法

似乎没有 API 可以获取将项目放入 ownerpasteboard

来自documentation

粘贴板所有者和项目

最后将数据放入的对象 粘贴板被称为粘贴板所有者。每一条数据 放置在粘贴板上被视为粘贴板项目。这 粘贴板可以容纳单个或多个项目。应用程序可以放置或 检索尽可能多的项目。例如,假设用户选择 在视图中包含文本和图像。粘贴板让你 将文本和图像作为单独的项目复制到粘贴板。一个 从粘贴板读取多个项目的应用程序可以选择只取 它支持的那些项目(文本,但不是图像,对于 示例)。

addItems 方法没有(或者我可能找不到)任何名为 owner 的属性。

,

似乎没有我们可以为 UIPasteBoard 检索的方法或属性

以下是来自Apple Documentation

注意

从 iOS 14 开始,系统会在应用程序获取时通知用户 源自其他应用的一般粘贴板内容。

他们说这是系统生成的通知。因此,我认为我们无法以编程方式检索原始应用名称。

然而,他们提供了检测模式的方法,但不确定这是否有任何帮助。

使用 Detecting Patterns of Content in Pasteboard Items 中描述的方法确定粘贴板项目是否与各种 模式,例如网络搜索词、URL 或数字,不包含 通知用户。