我已经为此苦苦挣扎了几个小时,无法确认是否可以再实现以下场景。
场景:我正在开发一个应用程序来处理(创建、存储...)文件(图像、视频、pdf ..),并希望将其作为这些类型文件的查看器公开给设备中的任何其他应用程序,主要是照片库。
当前行为:当从 iPhone、谷歌驱动器、一个驱动器上的文件浏览器共享时,我的应用程序是可见的(当然还有处理文件)...除了照片库。我发现让它在那里可见的唯一可能方法是创建一个共享扩展,它不能满足我正在做的事情,因为共享扩展无法与应用程序通信并参与打开它并传递图像是一个限制路径(或流)。
这是我的 info.plist CFBundleDocumentTypes :
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>CFBundleTypeName</string>
<key>LSItemContentTypes</key>
<array>
<string>public.data</string>
</array>
</dict>
</array>
到目前为止,我发现你只需要 CFBundleDocumentTypes 在设备目标应用程序中注册你的应用程序以打开某些文件(由 LSItemContentTypes 指示的类型)。但是没有人提到(至少我还找不到),为什么在从照片库中选择共享照片时,这种配置不会让您的应用程序作为查看器可见。
重现:只需通过 XCode 或 Xamarin.iOS 项目创建本机 iOS 项目,并将上述部分引入您的 info.plist。当然,运行您的应用程序。您会从文件资源管理器中看到它,从尝试将 pdf 共享到您的文件的 safari 中看到它......,但不是从照片库中看到。