1

我试图让我的程序在后台播放重复的声音。

  1. 在 info.plist 中添加(必需的背景模式)属性和(应用程序播放音频)。

  2. 在我的故事板中,应用程序启动了一个带有根 TableViewController 的 UINavigation 控制器。在我的根 TableViewController.m 中有#import。

  3. 在我的 Root TableViewController 中有一个 NSTimer 属性 my_timer。我在 viewDidLoad 方法中设置如下:

my_timer = [NSTimer scheduleTimerWithTimeInterval:1.0 target:self 选择器:@selector(doMyFunction) userInfo:nil repeats:YES];

  1. 在 doMyFunction 方法中,我有 playSystemSound(1003)。

我的应用程序在前台模式下按预期定期播放声音,但在后台模式下永远不会播放。我无法弄清楚什么是不正确的,感谢您的帮助。

4

1 回答 1

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];
于 2013-01-20T12:10:47.940 回答