2014-10-30 3 views
4

Я разрабатываю приложение Mac, которое сохраняет и загружает файлы уникального типа. Тип правильно объявлен в info.plist под CFBundleDocumentTypes, который указан как LSHandlerRank: Owner и CFBundleTypeRole: Editor. Я выпускаю новую версию своего приложения, и мне бы хотелось, чтобы пользователи, у которых уже была предыдущая версия моего приложения на своем компьютере, установили новую версию, но сохранили старую версию, новая версия автоматически использует файловую ассоциацию для этот тип из старой версии приложения. Но поведение ОС по умолчанию, по-видимому, заключается в том, чтобы раннее установленное приложение, связанное с типом файла, было его постоянным владельцем, если пользователь не изменил его вручную. Я знаю, что инструмент командной строки duti может вносить изменения в ассоциацию, а также системный файл com.apple.LaunchServices.plist можно редактировать, но это не похоже на лучший или самый надежный способ сделать это программно из приложения , Есть ли какой-либо «правильный»/Apple-санкционированный способ делать то, что я хочу?переопределяет ассоциации файлов приложений Mac через CFBundleDocumentTypes в info.plist

+0

Вы нашли решение в конце? У меня есть такая же проблема: / – Uflex

ответ

3

Официальный, одобренный Apple способ применения приложения по умолчанию для типа файла, вероятно, должен использовать предоставленную им функцию LSSetDefaultRoleHandlerForContentType. Эта функция устанавливает значения, хранящиеся в LaunchServices.

Here является официальной официальной документацией о том, как использовать этот API в Objective-C и Swift.

Похоже, что это невозможно сделать с помощью Info.plist, так как первое приложение get установлено как предпочтительное для пользователя приложение. Пользователь должен изменить свое предпочтительное приложение, которое вы можете упростить с помощью вышеуказанного API.