0

NSUserDefaults次のように作成された URL を使用して、オーディオ ファイルのユーザー設定を保存します。

soundURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audioFile1.m4r", [[NSBundle mainBundle] resourcePath]]];

その後、その設定は次のように取得されます。

self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:self.audioURL error:&error];

これはうまく機能し、ベータ テストのために TestFlight を介してアプリがアドホック展開される最近まで問題はありませんでした。現在、アプリを再インストールすると、サウンドが再生されません。ログは、新しいインストールで変更された GUID (または同等のもの) にパスが依存していることを示しています。

file://localhost/var/mobile/Applications/D74D8B09-5B27-4EF9-A344-68304CFE5549/myApp.app/audioFile1.m4r

環境設定に保存されていましたが、その後のインストールでビルドされたときの URL は次のとおりです。

file://localhost/var/mobile/Applications/5F607CD7-6E32-45F0-9897-0DDBACBDD6B0/myApp.app/audioFile1.m4r

だから私の質問は次のとおりです。私はそれを間違っていますか? もしそうなら、正しい方法は何ですか?これが TestFlight でのみ発生するのはなぜですか?

4

1 に答える 1

2

ドキュメント ディレクトリにファイルの絶対 URL を保存することはありません。これは、アプリを更新すると、iOS がそのアプリ用に別の 16 進数の名前で新しいディレクトリを作成するためです。絶対 URL が間違った場所を参照しているため、適切なファイルが返されません。

アプリの更新中に保存されるファイル

ユーザーがアプリのアップデートをダウンロードすると、iTunes はそのアップデートを新しいアプリ ディレクトリにインストールします。次に、古いインストールを削除する前に、ユーザーのデータ ファイルを古いインストールから新しいアプリ ディレクトリに移動します。次のディレクトリ内のファイルは、更新プロセス中に保持されることが保証されています。

<Application_Home>/Documents

<Application_Home>/Library

他のユーザー ディレクトリのファイルも移動される可能性がありますが、更新後にそれらが存在することに依存しないでください。

詳細については、 iPhoneOSProgrammingGuideを参照してください。

于 2012-12-13T05:37:57.937 に答える