Перетаскивание дисков в macOS Каталина - PullRequest
0 голосов
/ 21 октября 2019

У меня есть приложение 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>
...