从cocos2d app播放itunes歌曲预览

时间:2014-03-07 13:16:28

标签: ios iphone cocos2d-iphone itunes

我想在我的应用中播放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];

如果有人这样做了,他们就会让我知道如何播放歌曲。

2 个答案:

答案 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对象