3

画像と URL (特に Web ページ) を開くことをサポートする必要がある iOS アクション拡張機能があります。ただし、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>

ただし、これでも問題は解決しません。これは、述語を使用する必要があるものですか? もしそうなら、どのように、そしてなぜですか?

4

2 に答える 2

1

私はこの問題を解決しました

<key>NSExtensionActivationRule</key>
        <string>SUBQUERY (
            extensionItems,
            $extensionItem,
            SUBQUERY (
            $extensionItem.attachments,
            $attachment,
            (
            ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO &quot;com.adobe.pdf&quot;
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO &quot;public.image&quot;
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO &quot;public.url&quot;
            )
            ).@count == $extensionItem.attachments.@count
            ).@count > 0</string>

最後の行 @count > 0 でうまくいきました。

于 2017-10-24T16:44:40.450 に答える