AVPlayer를 사용하여 iPod 노래를 재생할 수 있다는 것을 알고 있지만 initWithContentsOfURL
을 사용하여 iPod 노래 URL로 AVAudioPlayer
을 초기화하는 방법을 알 수 없습니다. 시도 할 때 AVAudioPlayer
초기화시 NULL을 반환합니다.initWithContentsOfURL을 사용하여 iPod Song URL로 AVAudioPlayer 초기화
는 내가 추가 처리를 위해 자사의 대리자 메서드 audioPlayerDidFinishPlaying
를 사용할 필요가 있기 때문에 내 앱이 배경 (앱이 백그라운드에서 실행중인 경우 호출되는 audioPlayerDidFinishPlaying
즉 AVAudioPlayer
대리자 메서드에서 실행될 때 AVAudioPlayer
를 사용해야합니다.하지만 AVPlayer
는 않습니다 대리자 메서드를 제공하지 않으므로 백그라운드에서 실행되지 않는 알림 만 사용할 수 있습니다.
다음 코드는 AVPlayer로 iPod 노래를 재생하기위한 코드입니다.
- (void)viewDidLoad {
[super viewDidLoad];
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
NSError *error = nil;
[session setActive:YES error:&error];
MPMediaQuery *query = [MPMediaQuery songsQuery];
NSArray *collection = [query items];
MPMediaItem *item = [collection objectAtIndex:0];
NSLog(@"%@",[item valueForProperty:MPMediaItemPropertyTitle]);
NSURL *url = [item valueForProperty:MPMediaItemPropertyAssetURL];
AVPlayer *player = [[AVPlayer alloc]initWithURL:url]; // <-- Line to Replace
[player play];
}
위대한 작품입니다. 그러나 나는 다음과 마지막 줄에 초를 교체하는 경우 :
AVAudioPlayer *player = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
호출 initWithContentsOfURL
에 NULL을 반환합니다.
내가 AVAudioPlayer
을 사용할 때 NULL을 반환하는 이유에 대한 의견이 있지만 AVPlayer
을 사용할 때 초기화 된 플레이어를 반환합니까?
기술 Q & A http://developer.apple.com/library/ios/#qa/qa1634/_index.html에 따르면 "initWithContentsOfURL과 함께 사용되는 URL은 파일 URL (file : //)이어야합니다. 즉 로컬 경로 여야합니다." 내 아이팟 라이브러리 노래의 URL을 얻을 때
경로는 다음과 같습니다
는 는아이팟 라이브러리 : //item/item.mp3 ID = -4017276016911605928
당신이 말할 것인가 내 iPod 라이브러리 경로가 "로컬 경로"로 간주되지 않거나 initWithContentsOfURL
이 NULL을 반환하는 버그라고 생각하십니까?
아무나 생각 나세요?
이 모든 솔루션은 무엇입니까? 나는 스위프트에서 같은 일을하고 있지만 행운은 없다. . 위 URL을 로컬 URL로 만드는 방법을 알려 주실 수 있습니까? –
@UsamaSadiq 미안하지만, 아래의 답에서 알 수 있듯이 해결책이없는 것 같습니다 (최소한 저에게는 효과가 없습니다). – JeffB6688