У меня есть приложение macOS, которое принимало перетаскивание дисков, а также файлы DMG. Начиная с Catalina, он больше не принимает диски, но файлы DMG по-прежнему работают как прежде. Я пробовал полный доступ к диску, но поведение не изменилось.
Вот выдержка из моего plist-файла:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>dmg</string>
</array>
<key>CFBundleTypeName</key>
<string>dmg</string>
<key>CFBundleTypeRole</key>
<string>Shell</string>
<key>LSHandlerRank</key>
<string>Default</string>
</dict>
<dict>
<key>CFBundleTypeName</key>
<string>disk</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>disk</string>
</array>
<key>CFBundleTypeRole</key>
<string>Shell</string>
<key>LSHandlerRank</key>
<string>Default</string>
</dict>
</array>
Код, получающий событие, не изменился и все еще работает дляФайлы DMG:
func applicationDidFinishLaunching(_: Notification) {
let event = NSAppleEventManager.shared().currentAppleEvent
if event?.eventID != AEEventID(kAEOpenApplication) {
NSApp.terminate(self) // in this case user used drag and app is just reaching this point after everything is set and done
} else {
Есть идеи?
Обновление 10/27 Оказывается, мне пришлось обновить несколько устаревших ключей И экспортировать и тестировать через Finder илиработает через Xcode. Если бы я попробовал последнее, он бы не «соблюдал» новые записи в списке. Weird. Вот часть обновления файла plist:
<array>
<dict>
<key>CFBundleTypeName</key>
<string>diskimage</string>
<key>CFBundleTypeRole</key>
<string>Shell</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>LSItemContentTypes</key>
<array>
<string>public.disk-image</string>
</array>
</dict>
<dict>
<key>CFBundleTypeName</key>
<string>disk</string>
<key>CFBundleTypeRole</key>
<string>Shell</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>LSItemContentTypes</key>
<array>
<string>public.volume</string>
</array>
</dict>
</array>