我看过一个名为 CopyTranslate 的 iPhone 应用程序。当我们复制某些东西时,例如在 safari 中,它可以通过本地通知对我们复制的内容进行翻译。
所以我想知道应用程序是否可以在后台接收 UIPasteboardChangedNotification 。然后我做了一个测试,我构建了一个可以在后台运行 10 分钟的应用程序,并观察 UIPasteboardChangedNotification。结果是应用程序无法在后台获得通知。
任何人都可以知道 CopyTranslate 如何实现它的功能吗?它每秒检查 UIPasetBoard 吗?如果是这样,它怎么知道有一个新的字符串副本而不是图像副本或其他东西。
谢谢你的任何想法!
我通过在后台检查每秒 UIPasteboard 的 changeCount 解决了这个问题。
以下是详细信息:
我在 AppDelegate 中持有一个属性 lastChangeCount,当我的应用程序进入后台时,我启动了一个无限的 while 循环,每次迭代休眠 1 秒。我会比较 UIPasteboard 的 changeCount 和 lastChangeCount 每次迭代,如果它们不相等,那么我知道粘贴板中有一些新的粘贴项目。所以我会得到 UIPasteboard 的字符串属性,如果它存在,我会安排一个本地通知来显示它。如果不是,我的意思是用户可能会复制图像或其他东西,所以我什么都不做。