从启动服务中删除URL方案处理程序



我正在开发一个Cocoa Mac应用程序,该应用程序动态生成并注册URL方案。然而,当应用程序注册自己以处理新生成的URL方案(例如myscheme1423://)时,我希望阻止应用程序响应任何以前注册的URL方案。

我使用LSSetDefaultHandlerForURLScheme()来注册URL方案;同时,应用程序会自动覆盖其Info.plist以包含新方案。如您所知,LSSetDefaultHandlerForURLScheme()函数会将给定的bundleID/scheme添加到LaunchServices数据库中。但是,我找不到等效的LaunchServices函数来从数据库中删除相同的bundleID/scheme对。

我知道我可以简单地忽略任何源自URL方案的外部事件,而不是应用程序正在注册的URL方案,但我觉得应该有一种简单的方法来完全消除系统对以前方案的了解。如果我的应用程序在注册新方案的过程中经历了几百次以上,那么磁盘上的大量空间(至少对于Plist来说)将被大量毫无意义的数据(即旧的Launch Services条目)占用。

我刚刚点燃了一个操场,开始玩耍。这是完全没有记录的,但它似乎是有效的。

尝试为的第二个参数传递("None" as CFString)

LSSetDefaultHandlerForURLScheme() 

相关内容

  • 没有找到相关文章

最新更新