从Cocos2D应用程序播放iTunes歌曲预览



我正在尝试使iTunes歌曲预览在我的应用中播放。我发现了其他一些这样的问题,但解决方案对我来说没有。我已经签署了Apple拥有的会员计划。这是我尝试过的一些事情:

这让我想到了我正在尝试的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];

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

使用mpmovieplayercontroller发布并起作用,我相信这是流媒体预览的推荐方法。根据您要做的事情,您可能必须通过一些步骤来启用背景游戏。祝你好运。P.S.如果您获得Avplayer的工作,则有更多文档可提供背景播放的解决方案

{

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];

}

///稍后我称之为播放方法

[self.songPreview play];

我使它起作用。我更改的一件事是,我从弧线上拿出了特定的班级,以确保一切都留在周围。这是我现在正在使用的代码

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

最新更新