从 cocos2d 应用播放 iTunes 歌曲预览
Posted
技术标签:
【中文标题】从 cocos2d 应用播放 iTunes 歌曲预览【英文标题】:Playing itunes song previews from cocos2d app 【发布时间】:2014-03-07 13:16:28 【问题描述】:我正在尝试在我的应用中播放 iTunes 歌曲预览。我发现了一些其他类似的问题,但没有一个解决方案对我有用。我已经注册了苹果的会员计划。以下是我尝试过的一些事情:
这让我得到了我正在尝试的 iTunes 预览 URL
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];
如果有人做过,可以告诉我如何播放歌曲。
【问题讨论】:
【参考方案1】:这是使用 MPMoviePlayerController 发布和工作的,我认为这是流预览的推荐方法。根据您要执行的操作,您可能需要完成一些步骤才能在后台启用播放。祝你好运。 p.s.如果您让 AVPlayer 正常工作,还有更多文档可用于后台播放解决方案,请参阅Technical QA doc 1668 from Apple
self.songPreview = [[MPMoviePlayerController alloc] init];
self.songPreview.movieSourceType = MPMovieSourceTypeStreaming;
/// 设置你的 URL 从你得到它的任何地方
[self.songPreview setContentURL:self.previewArtWorkButton.currentPreviewURL];
[self.view addSubview:self.songPreview.view];
/// 我已将此下一个属性设置为隐藏,因为我正在控制音量并以编程方式播放
[self.songPreview.view setHidden:YES];
/// 我将下一个属性设置为否,因为我正在使用另一个触发器来播放 /// 歌曲,而不是在缓冲完成后自动播放
[self.songPreview setShouldAutoplay:NO];
[self.songPreview prepareToPlay];
/// 稍后我调用 play 方法
[self.songPreview play];
【讨论】:
谢谢,我将保留它现在的方式(它已经在苹果商店并且做得很好)但是很高兴知道如果有的话还有另一种方法改变【参考方案2】:我已经让它工作了。我改变的一件事是我把那个特定的课程从 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 对象
【讨论】:
以上是关于从 cocos2d 应用播放 iTunes 歌曲预览的主要内容,如果未能解决你的问题,请参考以下文章