ios - 用于处理来自 Safari 的图像的操作扩展

标签 ios safari ios-extensions

我有一个 iOS 操作扩展,应该支持打开图像和 URL(特别是网页)。但是,从 Safari 中共享图像时,操作扩展不会出现在可用扩展列表中。例如,访问https://en.wikipedia.org点击共享图标将显示我的操作扩展,但访问 https://upload.wikimedia.org/wikipedia/commons/c/c4/PM5544_with_non-PAL_signals.png点击共享图标则不会。我还可以进入“照片”应用程序并选择要共享的 1 张或多张图像,这将显示我的操作扩展作为选项。我首先尝试了我的 Info.plist 文件,如下所示:

<key>NSExtension</key>
<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionActivationRule</key>
        <dict>
            <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
            <integer>-1</integer>
            <key>NSExtensionActivationSupportsImageWithMaxCount</key>
            <integer>-1</integer>
        </dict>
    </dict>
</dict>

我希望它能够通过共享表中的操作扩展接受来自所有应用程序的无限数量的图像和 URL。然而,这种情况并非如此;点击图像上的共享图标时,不会显示操作扩展。我已经添加了 NSExtensionActivationRule 键的所有值,如下所示:

<key>NSExtension</key>
<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionActivationRule</key>
        <dict>
            <key>NSExtensionActivationSupportsMovieWithMaxCount</key>
            <integer>-1</integer>
            <key>NSExtensionActivationSupportsFileWithMaxCount</key>
            <integer>-1</integer>
            <key>NSExtensionActivationSupportsAttachmentsWithMaxCount</key>
            <integer>-1</integer>
            <key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
            <integer>-1</integer>
            <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
            <integer>-1</integer>
            <key>NSExtensionActivationSupportsImageWithMaxCount</key>
            <integer>-1</integer>
        </dict>
    </dict>
</dict>

但是,这仍然不能解决问题。这是我必须使用谓词的东西吗?如果是这样,如何以及为什么?

最佳答案

我的操作扩展也有同样的问题,它可以从各种应用程序(照片、邮件、消息和大多数第三方应用程序)导入图像,但不能从 Safari 导入图像。这篇文章介绍了该做什么iOS Share extension not working on image urls 。你必须编写自己的 NSPredicate 字符串,在 Info.plist 中使用它

<key>NSExtensionAttributes</key>
   <dict>
   <key>NSExtensionActivationRule</key>
   <string>SUBQUERY (
       extensionItems,
       $extensionItem,
       SUBQUERY (
       $extensionItem.attachments,
       $attachment,
       ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
       ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.text"
       ).@count = 1
       ).@count > 0
   </string>
    </dict>

请注意,在我的例子中,我的操作扩展也支持文本,因此 public.text 行

关于ios - 用于处理来自 Safari 的图像的操作扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33311020/

相关文章:

ios - 如何在 iOS 中使用带有 UNNotification 的通知服务扩展

ios - 如何识别 iMessage 扩展中的消息是来自发送者还是接收者?

ios - CoreGraphics 圆形动画持续时间错误

ios - GDataServiceGoogleDocs

css - Safari 不会使用@font-face 使用文本对齐对齐

javascript - 尝试使用 iframe 提交表单时 Safari 上的奇怪行为

iphone - 在 Objective-C 中读取 powerpoint pptx 文件

ios - 我可以控制两个 View Controller 之间的转换(即通过用户滑动)吗?

javascript - 更改窗口后 Safari 模糊事件循环

objective-c - imessage 扩展程序可以打开主机应用程序吗?