声音在模拟器中播放但不在设备上播放

时间:2016-03-01 19:27:04

标签: ios swift

我正在尝试让我的应用在后台播放声音。我在viewDidLoad()中运行此代码:

do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        print("AVAudioSession Category Playback set")
        do {
            try AVAudioSession.sharedInstance().setActive(true)
            print("AVAudioSession has been set Active")
        } catch let error as NSError {
            print(error.localizedDescription)
        }
    } catch let error as NSError {
        print(error.localizedDescription)
    }

运行良好并设置为活动状态。在模拟器中运行时,我可以返回主屏幕并继续播放声音,但是当我在设备上运行声音时,声音将无法在应用程序外播放。

声音每隔x秒通过AVAudioPlayer播放。

注意:我在设备功能中启用了后台模式,并选中了“音频,Airplay和画中画”框。

3 个答案:

答案 0 :(得分:0)

如果您在任何时候停止播放声音,iOS可能不允许应用在后台重新开始播放声音。

答案 1 :(得分:0)

要返回您的应用并让声音继续播放,您必须将代码添加到viewWillAppear()。当您重新打开应用时,viewDidLoad()将不会被呼叫{。}}。

答案 2 :(得分:-1)

您需要在plist文件中进行一些更改。

即。 1)将所需背景模式设置为App播放音频

2)设置应用程序不在后台运行到NO。

  NSError *setCategoryErr = nil;
  NSError *activationErr  = nil;
 [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
 [[AVAudioSession sharedInstance] setActive:YES error:&activationErr];

然后,您需要在AppDelegate中编写这么多代码

现在,您可以在手机屏幕锁定或进入后台时轻松运行音频。