Swift 3如何覆盖静音模式并从背景播放音频

时间:2017-02-17 11:46:31

标签: ios iphone swift xcode audio

我正在尝试编写一个类似于手机查找器但具有完全不同的用法和调用渠道的应用程序。我能够获得用户的位置并且可以进行背景提取,但我正在努力的是在大声播放声音(即使电话是静音的),以便在他们在家中丢失时找到用户的电话。这在Android上很简单,我也想在iOS上复制它。当应用程序从前台切换到后台时,我能够播放声音:

func setupAudio(){
        print("Trying to play audio")
        guard let sound = NSDataAsset(name: "FeelinGood") else {
            print("asset not found")
            return
        }


        do {
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
            try AVAudioSession.sharedInstance().setActive(true)

            audioPlayer = try AVAudioPlayer(data: sound.data, fileTypeHint: AVFileTypeMPEGLayer3)

                audioPlayer.play()


        } catch let error as NSError {
            print("error: \(error.localizedDescription)")
        }


    }

但是当我在收到远程通知时尝试调用该方法时,这不起作用。我通过远程通知使用我的应用程序并能够播放自定义声音,但是只有在手机未处于静音模式时才有效。

应用程序商店中有很多应用程序覆盖了静音模式,所以我非常确定有办法做到这一点,但我不知道到底是怎么回事。

2 个答案:

答案 0 :(得分:1)

谢谢,它现在都在工作。 @zombie回答你的问题是的我启用了背景模式和音频,因为没有它我无法在应用程序进入后台时获取后台工作或音频播放。

我的问题是我两次设置AudioSession。一旦启动,我再次收到远程通知。一旦我从发布中删除它,它就开始工作了。来自java背景我觉得我只是重新初始化一个对象。显然不是。如果有人可以对它有所启发,那将会很有帮助。

答案 1 :(得分:0)

您是否尝试将音量设置为播放器

audioPlayer.volume = 1

也不要忘记启用后台模式

enter image description here