Я боролся с этим в течение нескольких часов и не мог подтвердить, возможен ли следующий сценарий или нет.
Сценарий: я разрабатываю приложение, которое имеет дело (create, store. ..) с файлами (изображение, видео, pdf ..) и хотите предоставить его в качестве средства просмотра для файлов этого типа любому другому приложению на устройстве и, в основном, библиотеке фотографий .
Текущее поведение: мое приложение отображается (и, конечно же, обрабатывает файлы) при нажатии на общий доступ из браузера файлов на iPhone, Google Drive, одном диске ... кроме библиотеки фотографий . Я нашел единственный возможный способ сделать это видимым - создать Share Extension , который не обслуживает то, что я собираюсь делать, поскольку это ограничение, которое Share Extension не может взаимодействовать с приложением и уделять ему внимание. откройте его и передайте путь к изображению (или поток).
Вот мой 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). Но никто не упомянул (по крайней мере, я не смог его найти), почему такая конфигурация не сделает ваше приложение видимым в качестве средства просмотра при выборе общего доступа к фотографии из библиотеки фотографий.
Для воспроизведения: просто создайте собственный проект iOS через XCode или Xamarin. iOS и добавьте указанный выше раздел в свой info.plist. И, конечно же, запустите свое приложение. Вы увидите это из проводника файлов, из сафари, пытающегося поделиться PDF-файлом с вашим файлом ..., но не из библиотеки фотографий.