AirDrop 已知 UTI 直接到应用程序而无需先保存到文件?

问题描述

我的 Swift iOS 应用程序可以读取多种不同的文件类型,所有文件类型均由“导入的”UTI 和 info.plist 文件中的匹配文档类型定义。其中两个(GPX 和 KML)在下面的 info.plist 摘录中有详细说明。

我发现,如果我创建自己独特的导出 UTI,例如文件扩展名为“.blah”的“com.mydomain.blah”,并将这样的文件空投到我的设备,那么我的应用程序将启动并处理该文件立即。

但是,如果我空投 GPX 或 KML 文件,那么我设备上的空投只是提供将其保存到“文件”(或启动 AppStore 应用程序)。如果我允许它保存到文件,那么我可以在“文件”中点击它,它会在我的应用中启动。

但是,我希望我的应用能够直接从 AirDrop 启动,而无需先通过文件(或者至少让 AirDrop 提供我的应用作为选项)。

这可能吗?如果是,如何?

(我也尝试过将下面的定义定义为“出口”UTI 而不是“进口”UTI,但没有帮助。)

    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeName</key>
            <string>GPS Exchange Format</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>LSHandlerRank</key>
            <string>Owner</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.topografix.gpx</string>
            </array>
        </dict>
        <dict>
            <key>CFBundleTypeName</key>
            <string>Keyhole MarkuP Language</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>LSHandlerRank</key>
            <string>Owner</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.google.earth.kml</string>
            </array>
        </dict>
    </array>

    <key>UTImportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.xml</string>
            </array>
            <key>UTTypeDescription</key>
            <string>GPS Exchange Format (GPX)</string>
            <key>UTTypeIconFiles</key>
            <array/>
            <key>UTTypeIdentifier</key>
            <string>com.topografix.gpx</string>
            <key>UTTypeReferenceURL</key>
            <string>http://www.topografix.com/GPX/1/1</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.filename-extension</key>
                <array>
                    <string>gpx</string>
                </array>
                <key>public.mime-type</key>
                <array>
                    <string>application/gpx+xml</string>
                </array>
            </dict>
        </dict>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.xml</string>
            </array>
            <key>UTTypeDescription</key>
            <string>Google Earth KML Document</string>
            <key>UTTypeIdentifier</key>
            <string>com.google.earth.kml</string>
            <key>UTTypeReferenceURL</key>
            <string>http://earth.google.com/kml/</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>com.apple.ostype</key>
                <string>GKml</string>
                <key>public.filename-extension</key>
                <array>
                    <string>kml</string>
                </array>
                <key>public.mime-type</key>
                <string>application/vnd.google-earth.kml+xml</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)