1

長押し>「マイアプリ」で開くを使用して、メールアプリからメディアファイルを受信するアプリを作成しようとしています

必要なファイルタイプをアプリに関連付けるのに問題があります。私はUniformTypeIdentifiersリファレンスを使用しています

これは私のinfo.plistがどのように見えるかです:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>mp3</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>MP3 Audio</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.mp3</string>
        </array>
        <key>LSTypeIsPackage</key>
        <false/>
    </dict>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>avi</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>AVI movie</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.avi</string>
            <string>video/x-msvideo</string>
        </array>
        <key>LSTypeIsPackage</key>
        <false/>
    </dict>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>3gp</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>3GPP movie</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.3gpp</string>
            <string>application/octet-stream</string>
        </array>
        <key>LSTypeIsPackage</key>
        <false/>
    </dict>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>mpg4</string>
            <string>mp4</string>
            <string>m4v</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>MPEG-4 content</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.mpeg-4</string>
            <string>video/mp4</string>
            <string>video/mp4v</string>
        </array>
        <key>LSTypeIsPackage</key>
        <false/>
    </dict>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>mov</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>QuickTime movie</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.apple.quicktime-movie</string>
            <string>video/quicktime</string>
        </array>
        <key>LSTypeIsPackage</key>
        <false/>
    </dict>
</array>

これらのうち、Mp3とAVIのみが[マイアプリ]オプションで開きます。カメラロールにビデオを追加する[ビデオの保存]オプションが表示されます。私は何が間違っているのですか?

関連付けたい形式は、AVI、3GP、MP4、M4V、MOVです。

私もこれを試しました。MP3、WAV、AVI、FLVで動作しますが、3GP、MP4、MOV、M4Vでは動作しません

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>Audio</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.audio</string>
        </array>
    </dict>
    <dict>
        <key>CFBundleTypeName</key>
        <string>Video</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.movie</string>
        </array>
    </dict>
</array>
4

2 に答える 2

3

ファイルタイプをiPhoneアプリケーションに関連付けるにはどうすればよいですか?は、あなたのものとはほんの少しだけ異なるいくつかの例を示しています。ドキュメントによると、いくつかの冗長性がありますが、このファイルの内容は機能するはずです。

  • CFBundleTypeExtensionsのみMacOSであり、その場合でも冗長であり、LSItemContentTypes存在する場合は無視されます。
  • LSTypeIsPackageのみMacOSであり、その場合でも冗長であり、LSItemContentTypes存在する場合は無視されます。
  • ドキュメントでは、 に統一型識別子を使用することを推奨してい CFBundleTypeNameます。たとえば、mp4 の場合、MPEG-4 コンテンツをそのまま使用するのではなく、代わりにpublic.mpeg-4(内部的に kUTTypeMPEG4)を試してください。

それでも、クリーンアップは良い考えだと思いますが、残りの2つは無視する必要があるため、これらのうち最後の1つだけが問題を解決する可能性があると思います.

… つまり、実際に問題を解決できると思われるのは、デバイスとキャッシュからアプリを消去し、xcode を終了してから、プロジェクトを再度開き、再ビルドして、再度実行することです。デバイスにリソースを配置するときに、Xcode とその展開メカニズムが混乱するという問題が発生しました。このクリーンアップを実行すると、この時点に到達する前に最初に登録の試みが失敗した場合に問題が解決する場合があります。

于 2012-07-22T03:58:26.067 に答える
0

ドキュメントのインポートもサポートする他のアプリ (例: TeamViewer、oPlayer など) をインストールしました。これらも、MOV、3GP、M4V などのメール アプリの「Open As ..」アクション シートに表示されません。

Apple は、一部のファイルをサードパーティのアプリで開くことを許可しておらず、それらを内部で処理することを望んでいると推測しています。したがって、ユーザーができることは、それらをカメラ ロールに保存することだけです。

残っている唯一のオプションは、アプリに機能を追加して、カメラ ロールからビデオを選択できるようにすることです。だから、メール>ビデオを保存>カメラロール>サードパーティアプリ

残念だ。

Info.plist の最終エントリ

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>Audio</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.audio</string>
        </array>
    </dict>
    <dict>
        <key>CFBundleTypeName</key>
        <string>Video</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.3gpp</string>
            <string>public.3gpp2</string>
            <string>public.mpeg-4</string>
            <string>public.avi</string>
            <string>com.apple.quicktime-movie</string>
            <string>public.mpeg</string>
            <string>public.movie</string>
        </array>
    </dict>
</array>

私はまだこれを回避する方法があることを望んでいます..誰か?

于 2012-07-23T09:40:40.580 に答える