【问题标题】:Playing itunes song previews from cocos2d app从 cocos2d 应用播放 iTunes 歌曲预览
【发布时间】: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];

如果有人做过,可以告诉我如何播放歌曲。

【问题讨论】:

    标签: ios iphone cocos2d-iphone itunes


    【解决方案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 对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      相关资源
      最近更新 更多