0

我目前正在为我的应用程序使用 MPNowPlayingInfoCenter 来显示正在播放的歌曲,但我希望将 HTTP Live Streaming 合并到我的应用程序中,这将在后台出现任意数量的不同轨道。

有没有办法在应用程序处于后台时设置 nowPlayingInfo(在一定时间后调用函数?),即使应用程序在技术上实际上并不在后台运行?

或者有没有办法在我的服务器上使用一个简单的调用来设置正在播放的信息,这将返回正确的信息 - 使用返回字符串或图像的 API 调用?

我知道这是可能的,因为 Songza 已经这样做了,但也许他们已经获得了使用 Apple 的某些私有方法的许可(如果你能做到的话)。

4

1 回答 1

1

如果您正在使用AVPlayer该类并且您的应用程序的主要目的是播放音乐,那么您将能够在后台运行它,从而在nowPlayingInfo更改曲目时更新。

只是一个简单的例子:

- (void)viewDidLoad {
    [super viewDidLoad]

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];

    if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)]){
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        [self becomeFirstResponder];
        //These two steps are important if you want the user to be able to change tracks with remote controls (you'll have to handle the remote control events yourself).
    }
    self.yourPlayer = [[AVPlayer alloc] init];
}

dealloc在您的方法中取消注册远程控制事件:

[[UIApplication sharedApplication] endReceivingRemoteControlEvents]

info.plist中的所需背景模式更改为App 播放音频

于 2012-11-23T21:10:20.367 回答