Как транслировать удаленное аудио в iOS 13? (SwiftUI) - PullRequest
0 голосов
/ 10 ноября 2019

Этот код с использованием AVPlayer работает только на Playground

import AVFoundation

    var player = AVPlayer()
let playerItem = AVPlayerItem(url: URL(string: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3")!)
      player = AVPlayer(playerItem: playerItem)
      player.play()

Когда я попытался запустить его в приложении SwiftUI на моем физическом устройстве, используя этот код:

 Button(action:{

              var player = AVPlayer()
            let playerItem = AVPlayerItem(url: URL(string: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3")!)
                  player = AVPlayer(playerItem: playerItem)
                  player.play()

            print("Works")

               },label:{

                   Image("play")
          })

Он печатает Работает на консоли. Тем не менее, он не воспроизводит звук на устройстве.

Буду признателен за любую помощь, здесь пока ничего не найдете.

Большое спасибо!

1 Ответ

3 голосов
/ 11 ноября 2019

В SwiftUI, Представления являются типами значений. Это только данные, которые описывают вещи на экране. Они могут быть созданы или уничтожены или скопированы в любое время. AVPlayer - это ссылка на конкретный объект проигрывателя. Здесь вы предполагаете, что он будет существовать, и будет только один из них. Это не то, что обеспечивает SwiftUI View.

Вам нужно переместить AVPlayer за пределы View (в объекты Model) и просто привязать к нему действия пользовательского интерфейса.

...