我试图让我的程序在后台播放重复声音。
在info.plist中添加(必需的背景模式)属性和(apps播放音频)。
在我的故事板中,app启动了一个带有根TableViewController的UINarvigation控制器。在我的Root TableViewController.m中有#import。
我的Root TableViewController中有一个NSTimer属性my_timer。我在viewDidLoad方法中设置如下:
my_timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(doMyFunction)userInfo:nil repeats:YES];
我的应用程序在前置模式下会按预期定期播放声音,但从不以后台模式播放。我无法弄清楚做错了什么,谢谢你的帮助。
答案 0 :(得分:2)
playSystemSound永远不会在后台播放音频。为此,请在主要源代码中调用此函数,只需在ViewDidLoad:
中调用-(void)createAudioSession
{
// Registers this class as the delegate of the audio session.
[[AVAudioSession sharedInstance] setDelegate: self];
// Use this code instead to allow the app sound to continue to play when the screen is locked.
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
NSError *myErr;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback error:&myErr];
}
然后
AVAudioPlayer * FXPlayer;
FXPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:resourcePath] error:&err];
FXPlayer.numberOfLoops = -1; // will loop forever
[FXPlayer play];