Я боролся с этим около двух недель. Я считаю, что полностью следую документации, но на данный момент единственное место, где мое приложение появляется, — это когда пользователь делится только одной фотографией из приложения «Фотографии». Он не отображается, если в приложении «Фото» выбрано несколько изображений, а также не отображается для изображений в Safari или Mail.
Теперь я знаю, что это возможно, потому что десятки других третьих Приложения -party отображаются на листе «Поделиться» для любого из этих типов изображений (на моем устройстве: Instagram, OmniFocus, Instapaper, Obsidian, ChatGPT и это лишь некоторые из них).
И эти также не являются расширениями Share Sheet - почти все из них полностью откроют целевое приложение и переключят фокус с исходного приложения.
Основной первоисточник, на который мне нужно обратить внимание, — это Apple TechNote («Как мне чтобы мое приложение отображалось в меню «Открыть в...»). Я начал новый проект Xcode, внес изменения, предложенные в этом документе, и... как и в моем реальном приложении, я вижу этот значок только для отдельных фотографий в приложении Photos.
Я пробовал разные варианты LSHandlerRank и CFBundleTypeRole; Я пробовал с CFBundleTypeIconFiles и без него; с LSSupportsOpeningDocumentsInPlace и без него; Я перешел от общих UTI, таких как public.data и public.content, к промежуточным, таким как public.image, и конкретным, таким как public.jpeg. Мне ничего не помогает. Я пытался открыть заявку на уровне кода в службе поддержки разработчиков Apple, но все еще жду ответа. (Я использую эти универсальные UTI, потому что другие приложения, которые работают таким образом, появляются на каждом листе общего доступа, везде на устройстве_
Я видел значок моего приложения один раз на листе общего доступа, но когда я попробовал еще раз, этого не произошло. Похоже, мои CFBundleDocumentTypes кэшируются операционной системой и непредсказуемо обновляются. к состоянию, что вызвало это.
Что, черт возьми, я здесь делаю не так? Я включил очень простые инструкции о том, что я делаю со свежим проектом, и буду признателен за любые конкретные советы, которые кто-нибудь может мне дать? .
Ниже приведены шаги, которые я выполнил, чтобы получить нерабочую конфигурацию CFBundleDocumentTypes из нового проекта Xcode. Обратите внимание, что я уже пробовал множество различных комбинаций, поэтому, пожалуйста. не предлагай мне просто случайные новые комбинации попробовать - я хотел бы услышать конфигурацию, которая на самом деле работает, поскольку для всех этих других приложений ее реализация кажется тривиальной.
- Создайте новый проект Xcode.
- Добавьте в Info.plist следующее:
Код: Выделить всё
CFBundleDocumentTypes
CFBundleTypeName
Image
LSHandlerRank
Owner
CFBundleTypeRole
Editor
LSItemContentTypes
public.data
public.content
public.item
LSSupportsOpeningDocumentsInPlace
- Хотя я не думаю, что это должно повлиять на способность iOS находить типы документов пакета, добавьте это в свой автоматически созданный SceneDelegate< /code> для верности:
Код: Выделить всё
func scene(_ scene: UIScene, openURLContexts URLContexts: Set) {
for context in URLContexts {
let url = context.url
if let data = try? Data(contentsOf: url),
let image = UIImage(data: data) {
let alert = UIAlertController()
alert.title = "Loaded an image"
alert.message = "Size is \(image.size)"
window?.rootViewController?.present(alert, animated: true, completion: nil)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... eet-on-ios