Удалить обработчик схемы URL из сервисов запуска

Я разрабатываю приложение Cocoa Mac, которое динамически генерирует и регистрирует себя для схем URL. Однако, когда приложение регистрируется для обработки вновь сгенерированной схемы URL (например, myscheme1423://), я хотел бы запретить приложению реагировать на любые ранее зарегистрированные схемы URL.

я использую LSSetDefaultHandlerForURLScheme() с целью регистрации схемы URL; в связи с этим приложение автоматически перезаписывает свой Info.plist, чтобы содержать новую схему. Как вы знаете, LSSetDefaultHandlerForURLScheme() Функция добавляет указанный идентификатор / схему в комплект базы данных Launch Services. Однако я не смог найти эквивалентную функцию Launch Services для удаления той же пары bundleID/ схема из базы данных.

Я знаю, что мог бы просто игнорировать любые внешние события, которые произошли из схемы URL, отличной от той, для которой приложение активно зарегистрировано, но мне кажется, что должен быть простой способ полностью стереть знания системы о предыдущих схема. Если мое приложение проходит процесс регистрации новой схемы более нескольких сотен раз, наступит момент, когда значительное количество места (по крайней мере, для Plist) будет занято на диске множеством бессмысленных фрагментов. данных (то есть старые записи Launch Services).

1 ответ

Я просто зажег площадку и начал играть. Это совершенно недокументировано, но, похоже, работает.

Попробуйте пройти ("None" as CFString) для второго параметра

LSSetDefaultHandlerForURLScheme() 
Другие вопросы по тегам