iOS7 Custom UTI

Я бьюсь головой об стену на этом, но просто не могу заставить мой пользовательский UTI работать.

Я работаю над внедрением AirDrop в мое приложение, чтобы я мог обмениваться файлами между устройствами. Я могу успешно передать файл (ы) другим устройствам, но другие устройства, на которых установлено мое приложение, просто не будут открывать файлы в моем приложении.

Вот дамп из моего app.plist:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleDisplayName</key>
    <string>MYAPP</string>
    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeIconFiles</key>
            <array>
                <string>57x57</string>
            </array>
            <key>CFBundleTypeName</key>
            <string>MYAPPNAME Shared Assignment</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>LSHandlerRank</key>
            <string>Owner</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.MYAPPNAME.SIAASSIGNMENT</string>
            </array>
        </dict>
    </array>
    <key>CFBundleExecutable</key>
    <string>${EXECUTABLE_NAME}</string>
    <key>CFBundleIcons</key>
    <dict>
        <key>CFBundlePrimaryIcon</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>57x57 2.png</string>
                <string>114x114 2.png</string>
                <string>72x72 2.png</string>
                <string>144x144 2.png</string>
            </array>
        </dict>
    </dict>
    <key>CFBundleIdentifier</key>
    <string>com.MYAPPNAME.${PRODUCT_NAME:rfc1034identifier}</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>${PRODUCT_NAME}</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>4.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>4.0</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>NSMainNibFile</key>
    <string>Main_Window</string>
    <key>NSMainNibFile~ipad</key>
    <string>Main_Window_iPad</string>
    <key>UIBackgroundModes</key>
    <array>
        <string>fetch</string>
        <string>remote-notification</string>
    </array>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
    </array>
    <key>UIStatusBarTintParameters</key>
    <dict>
        <key>UINavigationBar</key>
        <dict>
            <key>Style</key>
            <string>UIBarStyleDefault</string>
            <key>Translucent</key>
            <false/>
        </dict>
    </dict>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
    </array>
    <key>UISupportedInterfaceOrientations~ipad</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
    </array>
    <key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.text</string>
            </array>
            <key>UTTypeDescription</key>
            <string>MYAPPNAME Shared Assignment</string>
            <key>UTTypeIdentifier</key>
            <string>com.MYAPPNAME.SIAASSIGNMENT</string>
            <key>UTTypeSize320IconFile</key>
            <string>72x72</string>
            <key>UTTypeSize64IconFile</key>
            <string>57x57</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>com.MYAPPNAME.SIAASSIGNMENT</key>
                <array>
                    <string>SIAASSIGNMENT</string>
                                <key>public.mime-type</key>
                                <string>application/xml</string>
                </array>
            </dict>
        </dict>
    </array>
</dict>
</plist>

Я пробовал много разных вещей, чтобы заставить это работать, я просто не могу заставить iOS7 признать, что это мой тип файла. Я знаю, что вы не должны использовать пространства имен public.xxx для ваших UTI, так как они предварительно назначены Apple. Любая помощь будет принята с благодарностью!

1 ответ

Решение

Убедитесь, что вы объявили типы как импортированные, чтобы iOS знала, что ваше приложение должно отображаться как опция для их открытия.

Также убедитесь, что вы реализуете -application: openUrl: sourceApplication: annotation: для получения файлов через AirDrop или контроллер взаимодействия с документами.

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