gpt4 book ai didi

iphone - iOS 4 : Remote controls for background audio

转载 作者:行者123 更新时间:2023-12-03 18:15:12 25 4
gpt4 key购买 nike

我目前正在尝试为我正在为 iOS 4 开发的应用程序设置背景音频。但是,与其他后台音频应用程序不同的是,该应用程序没有专用的音乐播放器 viewController比如潘多拉,这让任务变得有点困惑。

我已经正确设置了适当的 Info.plist 设置,并且在我的应用程序委托(delegate)中有一个 AVAudioPlayer 对象,可以从任何地方访问该对象。当用户播放一首歌曲时,我将 AVAudioPlayer 替换为用该歌曲初始化的新播放器并播放它。这一切都很好,只是现在我不知道如何支持远程控制事件。

根据苹果的文档,我有这个:

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}

- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}

- (BOOL)canBecomeFirstResponder {
return YES;
}

- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
switch(event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
if([iPhoneAppDelegate backgroundAudioPlayer].playing)
[iPhoneAppDelegate pauseBackgroundAudioPlayer];
else
[iPhoneAppDelegate playBackgroundAudioPlayer];
break;
}
}

问题是,我该把它放在哪里?苹果的文档似乎建议这应该放在某个 View Controller 中,但我的应用程序有很多 View Controller 和导航 Controller 。无论我尝试将其放在哪里,由于某种原因,点击多任务托盘 Remote 中的“切换播放/暂停”按钮要么会导致歌曲暂停一会儿然后取消暂停,要么以某种方式导致歌曲播放两次。

最佳答案

文档示例有点误导,但无需在任何地方子类化任何内容。放置 RemoteControlReceivedWithEvent: 的正确位置是在应用程序委托(delegate)中,因为无论应用程序是否位于前台,它都保留在响应程序链中。此外,接收远程控制事件的开始/结束应该基于您是否确实需要事件,而不是某些随机 View 的可见性。

关于iphone - iOS 4 : Remote controls for background audio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3456435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com