12

MPMediaPickerControlleriOSシミュレーターでを使用してアプリを実行しようとすると、次のようになります。

2012-05-28 22:26:42.416 My App[48426:11f03] Could not load source: 3
2012-05-28 22:26:42.418 My App[48426:11f03] *** Assertion failure in -[MPMediaPickerController loadView], /SourceCache/MediaPlayer_Sim/MobileMusicPlayer-1391.72/SDK/MPMediaPickerController.m:86
2012-05-28 22:26:42.419 My App[48426:11f03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unable to load iPodUI.framework'

これは私のApp/Xcode / iOSシミュレーターの問題ですか、それともiOSシミュレーターは単にサポートしていませんMPMediaPickerControllerか?そうでない場合は、物理デバイスで実行する以外に、他の方法はありますか?

4

3 に答える 3

15

MPMediaPickerControllerはシミュレータでは機能しません。Appleは、「HelloMusicPlayer」の「iPodLibraryAccessProgrammingGuide 」にこれを記載しています。メモには次のように書かれています。

注:シミュレーターはデバイスのiPodライブラリにアクセスできないため、これらの手順を実行するには、プロビジョニングされたデバイスが必要です。

アサーションを防ぐために、コードでこれにアクセスできるかどうかをいつでも確認できます(以下のコードはARCとiOS SDK 5.0を使用しています)。

MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio];

[picker setDelegate:self];
[picker setAllowsPickingMultipleItems:YES];
[picker setPrompt:NSLocalizedString(@"Add songs to play","Prompt in media item picker")];

@try {
    [picker loadView]; // Will throw an exception in iOS simulator
    [self presentViewController:picker animated:YES completion:nil];
}
@catch (NSException *exception) {
    [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Oops!",@"Error title")
                                message:NSLocalizedString(@"The music library is not available.",@"Error message when MPMediaPickerController fails to load") 
                               delegate:nil 
                      cancelButtonTitle:@"OK" 
                      otherButtonTitles:nil] show];
}
于 2012-05-31T20:17:38.207 に答える
2

また(ストーリーボードを使用している場合)、それを試すことができます:

- (IBAction)showPicker:(id)sender
{
#if TARGET_IPHONE_SIMULATOR
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"playerTest"
                                                    message:@"Media picker didn't work in simulator, please run this app on device"
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
    [alert show];
#else
    [self performSegueWithIdentifier:@"ShowPickerViewSegue" sender:self];
#endif
}
于 2012-11-29T02:56:22.287 に答える
0

MPMediaPickerController追加のコード変更なしで iOS シミュレーターで動作するようになりました (少なくとも iOS 8 以降、おそらくそれ以前)。これを実証できるプロジェクトは次のとおりです: GVMusicPlayerController

実際のデバイスから必要なファイル (最も重要なMediaLibrary.sqlitedbデータベース ファイル) をコピーして、シミュレータで音楽ライブラリを準備する必要があります。ファイルを再生してアートワークを表示する場合は、、、およびフォルダ ( にあります) もコピーする必要iTunes_Control/MusicPurchasesありArtworkます/var/mobile/Media/。詳細については、この質問を参照してください:シミュレーターで iPod ライブラリにアクセスできますか? .

于 2016-10-11T11:42:31.227 に答える