【发布时间】:2017-05-06 14:56:22
【问题描述】:
我希望我的应用在其他系统应用被卸载时做出反应(而不是当我的应用卸载时)。有没有任何预期的可可方法?如果没有,是否有可靠的(如果不是有意的)方法来做到这一点?
我确实有一个最有趣的列表来观察,因此仅限于特定其他应用程序的解决方案很好,但通用解决方案会很棒。语言也不是什么大问题。 Objective-C 和 Swift 是最简单的,但如果必须编写脚本,那也没关系。
【问题讨论】:
我希望我的应用在其他系统应用被卸载时做出反应(而不是当我的应用卸载时)。有没有任何预期的可可方法?如果没有,是否有可靠的(如果不是有意的)方法来做到这一点?
我确实有一个最有趣的列表来观察,因此仅限于特定其他应用程序的解决方案很好,但通用解决方案会很棒。语言也不是什么大问题。 Objective-C 和 Swift 是最简单的,但如果必须编写脚本,那也没关系。
【问题讨论】:
Mac 应用程序并不像在其他一些系统上那样真正“安装”。它们只是捆绑包,用户可以在任何地方运行。
如果您有特定的 .app 文件名要观察,您可以设置一个 NSMetadataQuery 来观察它的变化,并在用户将其移至回收站时收到通知。
【讨论】:
您可以使用-[NSWorkspace URLForApplicationWithBundleIdentifier:]。或者 LSCopyApplicationURLsForBundleIdentifier 在具有相同捆绑 ID 的多个版本的情况下。但这将是一种类似于拉动的实现,而不是基于通知的实现。
捆绑标识符也可以通过kMDItemCFBundleIdentifier 谓词与NSMetadataQuery 一起使用。
【讨论】: