私はインターネットに接続して再生しようとすると、通常、私は "インターネットに接続していません"と表示して、初めてのアプリ起動時にバックグラウンドで同じ音楽を再生するためにmpmovieplayerコントローラを持っています私は、インターネットに接続した後、すべてのソリューションを再生ボタンをクリックしたときにエラーiPhoneのネットワーク接続性をチェックした後にアプリがクラッシュする
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'An AVPlayerItem cannot be associated with more than one instance of AVPlayer'
私のコードはここに
static MPMoviePlayerController *player=nil;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// Custom initialization
[MainViewController stopStreaming];
player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://159.253.145.180:7104"]];
player.movieSourceType = MPMovieSourceTypeStreaming;
player.view.hidden = YES;
[self.view addSubview:player.view];
[player prepareToPlay];
[player play];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;
newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
Reachability* reachabile = [Reachability reachabilityWithHostName:@"www.apple.com"];
NetworkStatus remoteHostStatus = [reachabile currentReachabilityStatus];
if(remoteHostStatus == NotReachable)
{
NSLog(@"not reachable");
UIAlertView *notReachableAlert=[[UIAlertView alloc]initWithTitle:@"NO INTERNET CONNECTION" message:@"This Application Need Internet To Run" delegate:self cancelButtonTitle:@"Okay Buddy" otherButtonTitles: nil];
notReachableAlert.delegate=self;
[notReachableAlert show];
[notReachableAlert release];
}
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackStateDidChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerLoadStateChanged:) name:MPMoviePlayerLoadStateDidChangeNotification object:player];
MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame:CGRectMake(22, 320, 200, 15)] autorelease];
volumeView.center = CGPointMake(152,372);
[volumeView sizeToFit];
[self.view addSubview:volumeView]; // Do any additional setup after loading the view from its nib.
}
アプリがクラッシュするのですか?
コードの書式設定に少し時間をかけてください。それは判読不能に近いです。あなたが読者のためにそれを作るのが簡単になればなるほど、あなたは良いと役に立つ答えを得る可能性が高くなります。 – Till
考えられる原因はたくさんあります。ステップ1; viewDidAppearであなたのプレイヤーを初期化し、まだinitWithNibには入れないでください。 – Till
@コードを正しく配置しないと申し訳ありません。バックグラウンドアクティビティのコードAVAudioSessionを追加したときに問題(エラー)が発生していると思います。実際にプレイヤーとそのプロパティをどこで初期化しましたか? –