для вашего второго вопроса мы не можем 100% уверен, что только ваше приложение можно запустить на указанном расширение приложения, которое полностью контролируется пользователем , но мы можем контролировать на какие документы вы хотите, чтобы показать свое расширение приложение следовать Declaring Supported Data Types for a Share or Action Extension
сделать тип подгоняет документ для предикатов записи под ключом NSExtensionActivationRule , например: для PDF, изображений и преуспевать документы я сделал следующие предикаты с максимальным количеством документа 1.
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<string>SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
(
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.adobe.pdf"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.png"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.jpeg"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.jpeg-2000"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.excel.xls"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "org.openxmlformats.spreadsheetml.sheet"
)
)[email protected] == [email protected]
)[email protected] == 1</string>