【发布时间】:2014-01-19 01:18:24
【问题描述】:
我正在编写一个通过计时器定期播放声音的 iPhone 应用程序。这个应用程序的第一个版本在最小化或屏幕空白时播放音频很好,但是,在添加一些 UI 后,它看起来已经停止了。我不确定为什么,甚至不知道如何诊断(删除 UI 代码并不能解决问题)。
我在 info.plist 文件中设置了背景模式:(“应用程序通过 Airplay 播放音频或流式传输音频/视频”)并且我的应用程序委托中也有以下内容:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback
error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES
error:&activationErr];
return YES;
}
在我的 ViewDidLayoutSubViews 方法中,我这样初始化 AVPLayer:
self.fAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
self.fAudioPlayer.numberOfLoops = 0;
[self.fAudioPlayer setVolume:volume];
[self.fVolumeLevelSlider setValue:volume];
其中 fAudioPlayer 是 AVAudioPlayer 类型。当我的计时器被击中时,我会像这样播放音频:
self.fBGTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
[self.fAudioPlayer play];
我仍在检查我的更改,以查看我添加的内容(如果有的话)可能会导致声音在后台从一个应用程序版本停止播放到下一个应用程序版本。有没有人看到这里有什么不对劲的地方?
【问题讨论】:
-
如何在后台运行计时器?
标签: ios audio timer background