iOS 共享扩展不适用于图片网址
iOS Share extension not working on image urls
我有一个使用这些规则的共享扩展:
<dict>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
<integer>10</integer>
<key>NSExtensionActivationSupportsText</key>
<integer>1</integer>
</dict>
它非常适合普通网站和图片,但我无法像这样解析图片 url: ( http://www.zappos.com/images/z/3/3/5/4/0/3/3354034-p-2x.jpg )。我厌倦了添加其他规则,但当我使用 Safari 打开此网站并单击共享时,我的共享扩展仍然不会出现。
但是如果我将规则设置为 TRUEPREDICATE,我的共享扩展可以解析该网站。
我做错了什么?
谢谢
你没有做错,只是Apple定义的common keys(下图)不能包含所有情况。
对于您的情况,您必须按照 Apple 的建议编写自己的 NSPredicate 字符串:Declaring Supported Data Types for a Share or Action Extension
我把苹果的例子改成这样:
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<string>SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image";
).@count == $extensionItem.attachments.@count
).@count == 1
</string>
</dict>
您可以将 public.image
更改为任何其他 Uniform Type Identifiers。
下面列出了一些常见的尿路感染:
基于 wj2061 的回答,以下谓词将获取主机应用程序提供的所有附件。
<key>NSExtensionActivationRule</key>
<string>SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.item" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.content"
).@count == $extensionItem.attachments.@count
).@count > 0
</string>
我通过
解决了这个问题
<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.url"
)
).@count == $extensionItem.attachments.@count
).@count > 0</string>
最后一行 @count > 0 对我有用。
我有一个使用这些规则的共享扩展:
<dict>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
<integer>10</integer>
<key>NSExtensionActivationSupportsText</key>
<integer>1</integer>
</dict>
它非常适合普通网站和图片,但我无法像这样解析图片 url: ( http://www.zappos.com/images/z/3/3/5/4/0/3/3354034-p-2x.jpg )。我厌倦了添加其他规则,但当我使用 Safari 打开此网站并单击共享时,我的共享扩展仍然不会出现。
但是如果我将规则设置为 TRUEPREDICATE,我的共享扩展可以解析该网站。
我做错了什么? 谢谢
你没有做错,只是Apple定义的common keys(下图)不能包含所有情况。
对于您的情况,您必须按照 Apple 的建议编写自己的 NSPredicate 字符串:Declaring Supported Data Types for a Share or Action Extension
我把苹果的例子改成这样:
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<string>SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image";
).@count == $extensionItem.attachments.@count
).@count == 1
</string>
</dict>
您可以将 public.image
更改为任何其他 Uniform Type Identifiers。
下面列出了一些常见的尿路感染:
基于 wj2061 的回答,以下谓词将获取主机应用程序提供的所有附件。
<key>NSExtensionActivationRule</key>
<string>SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.item" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.content"
).@count == $extensionItem.attachments.@count
).@count > 0
</string>
我通过
解决了这个问题<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.url"
)
).@count == $extensionItem.attachments.@count
).@count > 0</string>
最后一行 @count > 0 对我有用。