2017-02-17 3 views
2

Я пытаюсь написать приложение, которое работает как поисковик телефона, но с совершенно разными обычаями и каналом вызова. Я могу получить местоположение пользователя и сделать фоновое извлечение в порядке, но я стараюсь играть громко (даже когда телефон молчит), чтобы найти телефон пользователя, когда он потерял его в доме. На 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)") 
     } 


    } 

Но когда я пытаюсь вызвать метод, когда я получаю удаленное оповещение это не работает. У меня есть тревога для работы с моим приложением с удаленным уведомлением и возможностью воспроизведения пользовательских звуков, но это работает только тогда, когда телефон не находится в бесшумном режиме.

В магазине приложений есть множество приложений, которые переопределяют бесшумный режим, поэтому я уверен, что есть способ сделать это, но пока не знаю, как это сделать.

ответ

0

ли вы попробовать установить громкость на плеере

audioPlayer.volume = 1 

также не забудьте включить фоновые режимы

enter image description here

+0

Спасибо зомби. Но моя проблема с аудиоплеером заключается в том, что я не могу даже заставить его играть, когда приложение полностью в фоновом режиме. Поэтому, когда приложение находится в фоновом режиме, и экран заблокирован, он не работает. В этом состоянии я получил сигнал тревоги, но я не могу отменить молчание. – abharku

+0

С будильником я имею в виду локальное уведомление с пользовательской мелодией в 30 секунд – abharku

+0

Вы включили фоновые режимы, как указано выше – zombie

1

Спасибо, это все работает. @zombie, чтобы ответить на ваш вопрос Да, я включил фоновый режим и аудио, так как без него я не могу получить фоновый эффект для работы или аудио, чтобы играть, когда приложение идет в фоновом режиме.

Моя проблема заключалась в том, что я дважды настраивал AudioSession. Однажды на Launch и снова, когда я получал удаленное уведомление. Как только я удалил его с момента запуска, все приступило к работе. Исходя из java-фона, у меня создалось впечатление, что я просто повторно инициализирую объект. Совершенно очевидно. Будет полезно, если кто-то может пролить свет на него.

Смежные вопросы