共有拡張機能を使用して Mac アプリを作成しています。ユーザーは 1 つの PDF ドキュメントを選択し、共有ボタンをクリックして拡張子を選択できます。ただし、私の拡張機能は表示されず、 info.plstNSExtensionActivationRule
のキーと関係があると思います。述語ステートメントを使用して、ユーザーが 1 つの PDF ドキュメントを選択したときにのみ拡張機能を表示できるようにしています。Apple docsでそれを行う方法の例があります:
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.adobe.pdf"
).@count == $extensionItem.attachments.@count
).@count == 1
に設定TRUEPREDICATE
するNSExtensionActivationRule
と機能しますが、Preview.app でのみ機能します。
何か案は?
この問題のテスト アプリを作成しました。ここで入手できます。
更新: Apple 開発者テクニカル サポートは次のように述べています。
エンジニアリング チームによると、これは共有サービスのバグです。Preview と Finder で共有されているアイテムは、開いている/選択されているファイルへの URL です。共有サービスは、URL が参照するファイルの UTI を取得し、拡張アイテムの添付ファイルの registeredTypeIdentifiers に登録することになっています。これは、PDF ファイルでは発生しません。その結果、登録されている型識別子は「public.file-url」(URL の UTI) だけであり、クエリで許可されていません。