我正在开发一个 Cocoa Mac 应用程序,它可以动态生成并注册自己的 URL 方案。但是,当应用程序注册自己以处理新生成的 URL 方案(例如 myscheme1423://)时,我想阻止应用程序响应任何以前注册的 URL 方案。
我LSSetDefaultHandlerForURLScheme()
用于注册 URL 方案的目的;同时,应用程序会自动覆盖它的 Info.plist 以包含新方案。您可能知道,该LSSetDefaultHandlerForURLScheme()
函数将给定的 bundleID/scheme 添加到 Launch Services 数据库中。但是,我找不到等效的启动服务函数来从数据库中删除相同的 bundleID/scheme 对。
我知道我可以简单地忽略源自 URL 方案的任何外部事件,而不是应用程序主动注册的那个,但我觉得应该有一种简单的方法来完全消除系统对以前的知识方案。如果我的应用程序通过数百次注册新方案的过程,就会出现一个点,即大量无意义的部分在磁盘上占用大量空间(至少对于 Plist 而言)数据(即旧的启动服务条目)。