4

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

LSSetDefaultHandlerForURLScheme()用于注册 URL 方案的目的;同时,应用程序会自动覆盖它的 Info.plist 以包含新方案。您可能知道,该LSSetDefaultHandlerForURLScheme()函数将给定的 bundleID/scheme 添加到 Launch Services 数据库中。但是,我找不到等效的启动服务函数来从数据库中删除相同的 bundleID/scheme 对。

我知道我可以简单地忽略源自 URL 方案的任何外部事件,而不是应用程序主动注册的那个,但我觉得应该有一种简单的方法来完全消除系统对以前的知识方案。如果我的应用程序通过数百次注册新方案的过程,就会出现一个点,即大量无意义的部分在磁盘上占用大量空间(至少对于 Plist 而言)数据(即旧的启动服务条目)。

4

1 回答 1

1

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

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

LSSetDefaultHandlerForURLScheme() 
于 2017-01-17T04:13:32.787 回答