我正在开发一个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()