私はこれに数時間苦労しており、次のシナリオを達成できるかどうかを確認できませんでした。
シナリオ: ファイル (画像、ビデオ、pdf など) を処理 (作成、保存) するアプリを開発しており、これらのタイプのファイルのビューアーとしてデバイス内の他のアプリに公開したいと考えています。フォトライブラリー。
現在の動作: iPhone、Google ドライブ、1 つのドライブのファイル ブラウザーから共有をヒットすると、私のアプリが表示されます (もちろん、ファイルを処理します)。ただし、フォト ライブラリは除きます。共有拡張機能がアプリと通信できず、アプリを開いて画像を渡すことができないという制限があるため、そこに表示できる唯一の方法は、私が行っていることを提供しない共有拡張機能を作成することですパス (またはストリーム)。
ここに私の info.plist CFBundleDocumentTypes があります:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>CFBundleTypeName</string>
<key>LSItemContentTypes</key>
<array>
<string>public.data</string>
</array>
</dict>
</array>
これまでに見つけたのは、(LSItemContentTypes で示されるタイプによって) 特定のファイルを開くためにデバイス ターゲット アプリにアプリを登録するには、CFBundleDocumentTypes が必要なだけです。しかし、誰も言及していません (少なくとも私はまだ見つけることができませんでした)、なぜこの種の構成では、写真ライブラリから共有写真を選択したときにアプリがビューアーとして表示されないのですか?
再現するには: XCode または Xamarin.iOS プロジェクトを介してネイティブ iOS プロジェクトを作成し、上記のセクションを info.plist に導入するだけです。もちろん、アプリを実行します。ファイル エクスプローラーや、pdf をファイルに共有しようとしているサファリからは表示されますが、写真ライブラリからは表示されません。