如何处理后台音频播放,而iOS设备被锁定,或者在另一个应用程序?如何处理后台音频播放,而iOS设备被

2019-05-13 19:38发布

设计iOS版生成音乐系统,采用了openFrameworks,我需要提供其中用户可以收听由应用程序时所产生的音乐的模式:

  • 该设备被锁定
  • 用户使用另一应用程序

有些应用程序般绽放,或闹钟,就像是和建议用户切换启用/禁用此功能。

任何提示是什么?

Answer 1:

播放背景声音

播放或连续(即使该应用程序在后台运行)记录音频的应用程序可以注册在后台执行这些任务。 启用从功能选项卡的背景模式部分Xcode项目的音频支持。 (您也可以使通过包括在你的应用程序的Info.plist文件中的音频值UIBackgroundModes重点支持了。),其发挥在后台必须发挥音频内容,而不是沉默的音频内容的应用程式。

苹果的参考“播放和录制背景声音”

确保音频继续当屏幕锁定

对于启用/禁用此功能,我发现来启用和停用您的音频会议 ,我还没有尝试过自己,但它看起来像你所需要的。



Answer 2:

你需要让夫妇在plist文件的变化。

即1)设定所需的背景模式,应用程序播放音频

2)组应用程序不能在后台运行NO。

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

然后,你需要写在AppDelegate中这些多码

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



Answer 3:

请在Xcode项目设置,以及在代码中的以下变化。

步骤1)选择在Xcode的导航项目文件。 然后,从功能部,打开背景模式小节。 背景模式列表提供给您后,打勾的音频和Airplay的开关。

STP 2)使用下面的SWIFT代码,基本上你需要为你的应用程序设置音频会议。

var audioPlayer : AVAudioPlayer!

@IBAction func playButtonClicked(sender : AnyObject){

    let dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
    dispatch_async(dispatchQueue, {

        if let data = NSData(contentsOfFile: self.audioFilePath())
        {
            do{
                let session = AVAudioSession.sharedInstance()

                try session.setCategory(AVAudioSessionCategoryPlayback)
                try session.setActive(true)

                self.audioPlayer = try AVAudioPlayer(data: data)
                //self.audioPlayer.delegate = self
                self.audioPlayer.prepareToPlay()
                self.audioPlayer.play()
            }
            catch{
                print("\(error)")
            }
        }
    });
}

func audioFilePath() -> String{

    let filePath = NSBundle.mainBundle().pathForResource("mySong", ofType: "mp3")!
    return filePath
}

该音频播放会话将被发挥你的应用程序播放,即使应用程序在后台或手机处于静音模式或设备已被锁定。



Answer 4:

看这个教程。 它有一些后台服务实例

http://www.raywenderlich.com/29948/backgrounding-for-ios



Answer 5:

你需要让夫妇在plist文件的变化。

1)设定所需的背景模式,应用程序播放音频

2)组应用程序不能在后台运行NO。

let dispatchQueue = DispatchQueue.global()
            dispatchQueue.async(execute: {
                    do{
                        let session = AVAudioSession.sharedInstance()

                        try session.setCategory(AVAudioSessionCategoryPlayback)
                        try session.setActive(true)

                        self.isObjectAllocate = true
                        if self.isPlayed == false{
                            self.playSound(soundName: "http://radio.zahraun.com:8000/live.m3u")
                            self.isPlayed = true
                            self.btnPlayAudio.setImage(#imageLiteral(resourceName: "pause") , for: .normal)

                        }else{
                            self.audioPlayer.pause()
                            self.isPlayed = false
                            self.btnPlayAudio.setImage(#imageLiteral(resourceName: "audioPlay"), for: .normal)
                        }
                    }
                    catch{
                        print("\(error)")
                    }
            });


Answer 6:

您也可以使用此代码:

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:NULL];

AVAudioSession *backgroundMusic = [AVAudioSession sharedInstance];

[backgroundMusic setCategory:AVAudioSessionCategoryPlayback error:NULL];


文章来源: How to handle background audio playing while iOS device is locked or on another application?