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

问题描述:

我正在尝试编写一个应用程序,其功能类似于手机查找程序,但具有完全不同的用法和调用通道。我能够获取用户的位置,并且可以完成后台抓取,但我一直在努力的是在音量大的时候播放声音(即使手机静音),以便在用户的电话丢失时找到用户的手机。这在Android上很容易,我也想在iOS上复制它。我是能够播放声音时,应用程序从前台切换至后台做这个:Swift 3如何覆盖静音模式并播放背景音频

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)") 
     } 


    } 

但是当我尝试当我收到远程通知调用此方法不起作用。我有闹钟可以通过远程通知与我的应用程序一起工作,并且可以播放自定义声音,但只有当手机不处于静音模式时才有效。

应用商店中有很多应用正在覆盖静音模式,所以我非常肯定有一种方法可以做到这一点,但我不确定如何。

你尝试音量设置给玩家

audioPlayer.volume = 1 

也不要忘记启用后台模式

enter image description here

+0

谢谢僵尸。但我的音频播放器的问题是,当应用程序完全处于后台时,我甚至无法播放它。所以当应用程序在后台并锁定屏幕时,它不起作用。在这种状态下,我惊慌失措,但我无法推翻沉默。 – abharku

+0

带闹钟我的意思是本地通知自定义旋律为30秒 – abharku

+0

是否启用了上述背景模式 – zombie

谢谢,这是现在所有工作。 @僵尸来回答你的问题是的,我没有启用背景模式和音频我无法获取背景获取工作或应用程序在后台进行播放音频。

我的问题是我设置了AudioSession两次。一旦启动,并再次获得远程通知时。一旦我从启动中删除它,一切都开始工作。来自java背景,我的印象是,我只是重新初始化一个对象。显然不是。如果有人能够点亮它,这将会很有帮助。