Я сделал небольшое тестовое приложение, чтобы попытаться изолировать эту проблему, но оно демонстрирует то же поведение: applicationMusicPlayer немедленно прекращает воспроизведение, когда приложение переходит в фоновый режим.Я не знаю, что я делаю неправильно, или это ошибка Apple.Кажется, это так просто, что если бы это была ошибка Apple, другие бы с ней столкнулись и опубликовали.
- Я установил ключ info.plist UIBackgroundModes в Audio
- I 'я проверил, что приложение не завершает работу
- Я протестировал на 4.1 бета 3 с теми же результатами
- Я искал в Интернете аналогичные жалобы.Люди сообщают о других проблемах / ошибках MPMediaPlayerController, но более сложных, например, связанных с взаимодействием с AVAudio.
Любые / все предложения приветствуются.
Вот ядро моего тестового приложения:
MPTest.h
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <MediaPlayer/MediaPlayer.h>
@interface MPTestViewController : UIViewController <MPMediaPickerControllerDelegate> {
MPMusicPlayerController *MPPlayer;
}
@property (nonatomic, retain) MPMusicPlayerController *MPPlayer;
@end
MPTest.m
#import "MPTestViewController.h"
@implementation MPTestViewController
@synthesize MPPlayer;
- (void)viewDidLoad {
[super viewDidLoad];
// get the application music player
self.MPPlayer = [MPMusicPlayerController applicationMusicPlayer];
// break to allow application didFinishLaunching to complete
[self performSelector:@selector(presentMPPicker) withObject:nil afterDelay:0.01];
}
- (void)presentMPPicker {
// present the picker in a modal view controller
MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio];
picker.delegate = self;
[self presentModalViewController:picker animated:YES];
[picker release];
}
// delegate called after user picks a media item
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {
[self dismissModalViewControllerAnimated:YES];
// tell the player what to play
[MPPlayer setQueueWithItemCollection:mediaItemCollection];
// start playing
[MPPlayer play];
}
@end