我有一个Action Extension
,它可以从设备上安装的其他应用程序接收各种类型的文件。为此,Info.plist
具有以下条目:
<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 "com.microsoft.bmp" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.jpeg" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.png" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.word.doc" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.excel.xls" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.poewerpoint.ppt" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.file-url" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url"
).@count == $extensionItem.attachments.@count
).@count == 1
</string>
<key>NSExtensionServiceToolbarIconFile</key>
<string></string>
</dict>
在这里,我已经征集了我的分机可以接受的文件的UTI。
目前,如果用户点击Safari网页上的Share
,我的分机就会显示。但我只想要接受文件而不是网页
因此我删除了ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url"
行。现在我没有在浏览器中看到我的扩展程序,但它也从Dropbox,Google Drive等其他应用程序中消失了。
目前作为临时解决方法,我最后过滤了包含.html
的网址,并向用户显示一条警告,说明不支持此功能。但是,网络URL没有这些。那么有没有办法,我可以通过Info.plist
条目或ViewControler
区分文件的网址和网页的网址?