使用CFBundleDocumentTypes:为什么我的应用程序不会显示在"共享"菜单中?

Kru*_*lur 7 objective-c xamarin.ios ios

我正在尝试为所有可能的文件类型注册我的应用程序.我在info.plist中添加了以下内容:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>public.data</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.data</string>
            <string>public.content</string>
        </array>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

如果我现在在Safari中打开PDF并点击Safari的"共享"按钮,则不会提供我的应用程序.但是,如果我点击PDF本身,顶部会出现一个"打开方式"按钮,并列出我的应用程序.

这不是一个真正的问题,但它会阻止用户将照片导入我的应用程序,因为照片应用程序中没有"打开"菜单.

我可以以某种方式注册"分享"菜单吗?

Mar*_*cke 4

不幸的是这是不可能的,因为:

Safari 中的共享屏幕用于UIActivityViewController显示可以通过页面执行的许多活动。这些活动在系统定义的活动中定义UIActivity.h,通常是系统定义的活动,例如Post to FacebookPost to TwitterMessagePrint等。

对于要出现在该屏幕中的非系统定义的活动,必须创建一个自定义UIActivity子类,然后UIActivityViewController使用一组此类活动进行初始化。

另一方面,“打开方式...”屏幕看起来类似,但使用的是UIDocumentInteractionController显示可以打开给定 URL/ UTI的应用程序(不要使用 Google UTI...)