【问题标题】:Swift Share Extension not shown for PDFsPDF 未显示 Swift 共享扩展
【发布时间】:2021-01-08 13:04:01
【问题描述】:

使用Swift5.3.2,iOS13.0,

我的共享扩展程序适用于图像和视频。

但它不适用于 PDF。

问题是我的应用在我尝试与我的应用共享的 PDF 文档的共享应用列表中不可见。

我知道必须在 info.plist 中正确设置规则。

我尝试了以下两次尝试 - 但都没有成功!

谁能告诉我 iOS 中的 PDF 共享扩展需要什么?

尝试 1:Info.plist

<key>NSExtension</key>
<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionActivationRule</key>
        <dict>
            <key>NSExtensionActivationSupportsFileWithMaxCount</key>
            <integer>20</integer>
            <key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
            <integer>1</integer>
            <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
            <integer>1</integer>
            <key>NSExtensionActivationSupportsImageWithMaxCount</key>
            <integer>100</integer>
            <key>NSExtensionActivationSupportsMovieWithMaxCount</key>
            <integer>25</integer>
        </dict>
    </dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.share-services</string>
    <key>NSExtensionPrincipalClass</key>
    <string>CustomShareNavigationController</string>
</dict>

尝试 2:Info.plist

<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.file-url"
                    || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url"
                    || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.jpeg"
                    || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.png"
                ).@count == $extensionItem.attachments.@count
        ).@count == 1
        </string>
    </dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.share-services</string>
    <key>NSExtensionPrincipalClass</key>
    <string>CustomShareNavigationController</string>
</dict>

【问题讨论】:

标签: swift share ios8-share-extension uiactivityitemprovider


【解决方案1】:

当您在 Safari 中启动 PDF 共享时,它实际上会考虑 2 个输入项:PDF 和 URL。由于您的 NSExtensionActivationRule 谓词明确指出 @count == 1,因此它将返回 false,因为有超过 1 个元素与您的谓词匹配。因此,解决方法是将 @count == 1 更改为 @count &gt;= 1 或任何最适合您的应用程序的逻辑。

更新了对我有用的查询:

<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.file-url"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.jpeg"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.png"
        ).@count == $extensionItem.attachments.@count
).@count >= 1
</string>

【讨论】:

  • 由于某种原因在 iOS 15 上,这不会显示 pdf 附件,但是这适用于 macOS Monterey 共享扩展。任何帮助将不胜感激
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多