我想在我的应用中播放itunes歌曲预览。我发现了一些像这样的问题,但没有一个解决方案对我有用。我已经注册了苹果公司的联盟计划。以下是我尝试过的一些事情:
这让我得到了我正在尝试的itunes预览网址
NSUInteger numberOfResults = 200;
NSString *searchString = @"AC/DC";
NSString *encodedSearchString = [searchString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *finalSearchString = [NSString stringWithFormat:@"https://itunes.apple.com/search?term=%@&entity=song&limit=%u",encodedSearchString,numberOfResults];
NSURL *searchURL = [NSURL URLWithString:finalSearchString];
dispatch_queue_t iTunesQueryQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, kNilOptions);
dispatch_async(iTunesQueryQueue, ^{
NSError *error = nil;
NSData *data = [[NSData alloc] initWithContentsOfURL:searchURL options:NSDataReadingUncached error:&error];
if (data && !error) {
NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSArray *array = [JSON objectForKey:@"results"];
NSLog(@"Array is:%@",array);
}
});
这没什么用的
NSURL *url = [NSURL URLWithString:[_backgroundPreviewList objectAtIndex:randomPreview]];
NSData *_objectData = [NSData dataWithContentsOfURL:url];
NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData:_objectData error:&error];
audioPlayer.numberOfLoops = 0;
audioPlayer.volume = 1.0f;
[audioPlayer prepareToPlay];
if (audioPlayer == nil)
{
NSLog(@"%@", [error description]);
}
else
{
[audioPlayer play];
}
这也没什么作用
AVPlayer* aPlayer = [AVPlayer playerWithURL:url];
[aPlayer play];
我甚至试过这个不起作用
MPMoviePlayerController* player = [[MPMoviePlayerController alloc] initWithContentURL:url];
[player play];
如果有人这样做了,他们就会让我知道如何播放歌曲。
答案 0 :(得分:4)
这是使用MPMoviePlayerController发布并运行的,我认为这是推荐的流媒体预览方法。根据您要执行的操作,您可能需要完成一些步骤才能在后台播放。祝好运。附:如果你让AVPlayer工作,那么有更多的文档可以提供背景播放解决方案,请参阅Technical QA doc 1668 from Apple
{
self.songPreview = [[MPMoviePlayerController alloc] init];
self.songPreview.movieSourceType = MPMovieSourceTypeStreaming;
///从您获取网址的地方设置您的网址
[self.songPreview setContentURL:self.previewArtWorkButton.currentPreviewURL];
[self.view addSubview:self.songPreview.view];
///我已将此下一个属性设置为隐藏,因为我正在控制音量并以编程方式播放
[self.songPreview.view setHidden:YES];
///我将下一个属性设置为No,因为我使用另一个触发器来播放///歌曲而不是在缓冲完成后自动播放
[self.songPreview setShouldAutoplay:NO];
[self.songPreview prepareToPlay];
}
///以后我调用播放方法
[self.songPreview play];
答案 1 :(得分:0)
我有它的工作。我改变的一件事是我从ARC那里拿出那个特定的课程来确保事情的存在。这是我现在使用的代码
NSURL *url = [NSURL URLWithString:@"URL"];
AVPlayerItem* playerItem = [AVPlayerItem playerItemWithURL:url];
NSLog(@"The url is: %@", url);
if(_player)
{
[_player release];
}
_player = [[AVPlayer playerWithPlayerItem:playerItem] retain];
[_player play];
_player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
其中_player是AVPlayer对象