我在AVPlayer中遇到問題,而不是在後臺播放。AVPlayer沒有在後臺轉發流媒體軌道
下面是詳細信息:
我有一個AVPlayer對象和AVPlayerItem爲我的視圖控制器的一個實例變量流從存儲在NSMutableArray裏鏈接的音樂,linkArray。當用戶在一個UITableView點擊一個軌道的軌道,這兩個對象實例化,像這樣:
musicPlayerItem = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:[linkArray objectAtIndex:indexPath.row]]];
player = [[AVPlayer alloc] initWithPlayerItem:musicPlayerItem];
...而它起着非常完美。每當曲目完成而應用程序是活動它會跳過罰款,或者當我手動觸發應用程序跳過曲目(無論是活動或後臺)。但是,當應用程序在後臺(包括設備被鎖定時)時,它不會在跳過時播放下一首曲目。
因此,它自己跳到下一首曲目,但不播放它。我必須再次使應用程序處於活動狀態或調用播放(通過耳機控制或全系統音樂控制)。
下面是skipTrack方法的代碼被稱爲兩個手動調用或系統時,這首歌的時候到達軌道末端:
if (nowPlaying == [linkArray count]-1) {
nowPlaying = 0;
musicPlayerItem = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:[linkArray objectAtIndex:0]]];
player = [[AVPlayer alloc] initWithPlayerItem:musicPlayerItem];
} else {
NSLog(@"NowPlaying (before increment: %i", nowPlaying);
//If not, increment nowPlaying by one and play
nowPlaying++;
NSLog(@"NowPlaying (after increment: %i", nowPlaying);
musicPlayerItem = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:[linkArray objectAtIndex:nowPlaying]]];
player = [[AVPlayer alloc] initWithPlayerItem:musicPlayerItem];
}
真希望有人能幫助我與
感謝您的答覆。 n00b問題,但是,什麼數據類型是_newTaskID_?我閱讀了你所附的iOS編程指南,其描述有點令人困惑。謝謝 – 2012-02-23 21:51:04
哎呀,我應該包括,這是一個UIBackgroundTaskIdentifier。所以,只需將其聲明爲「UIBackgroundTaskIdentifier newTaskID」 – Build 2012-02-23 22:05:01
好的,做到了。我在視圖控制器中的_applicationDidEnterBackground:_方法中調用了這個方法?再次感謝。 – 2012-02-23 22:06:57