от
Я построил приложение в iOS в Swift, который перечисляет изображения, песни и PDF-файлов клиента. Пользователь может скачать эти файлы и использовать их. Для песни, функциональность, чтобы позволить пользователю загрузить файл и после того как загрузка будет завершена, пусть он/ее воспроизвести файл. Песни перечислены в
UITableView
по названию альбома и по клику ячейки я называю
.show
, чтобы показать другой
UITableView
с песнями для этого альбома. По клику на ячейку в таблице, я могу проверить, если файл загружен или нет. Если он загружен я открываю контроллер представления с помощью
.show
, который имеет все элементы управления мультимедиа-плеером и метаданных медиа. Я реализовал все элементы управления мультимедиа, в том числе повторных и функции воспроизведения в случайном порядке и игрок постоянно играет на всех загруженных треков. Когда я нажмите кнопку назад на панели навигации, я уничтожаю экземпляр
AVPlayer
и песни не играют в фоновом режиме. Я делаю это потому, что если я не песня продолжает играть в фоновом режиме и я не знаю, как получить контроль воспроизведения проигрываемой песни. Это мое представление-контроллер для медиа-плеер
import Foundation
import UIKit
import AVFoundation
import MediaPlayer

class AudioPlayer: UIViewController, AVAudioPlayerDelegate {

    var downloadedTracks = [URL]()
    var playableAudioItems = [PlayableTrack]()
    var playableAudioItemsUnshuffled = [PlayableTrack]()
    var serviceAudioItems = [AudioItem]()
    var currentTrack: PlayableTrack? = nil
    var topLevelLabel = " "
    var avPlayerItem: AVPlayerItem?
    var player: AVPlayer?
    var currentTrackIndex = 0
    var commandCenter = MPRemoteCommandCenter.shared()
    var mpic = MPNowPlayingInfoCenter.default()
    var isRepeated = false
    var isShuffled = false

    @IBOutlet weak var albumArt: UIImageView!
    @IBOutlet weak var rewindButton: UIButton!
    @IBOutlet weak var playButton: UIButton!
    @IBOutlet weak var forwardButton: UIButton!
    @IBOutlet weak var titleTrack: UILabel!
    @IBOutlet weak var progressSlider: UISlider!
    @IBOutlet weak var previousTrack: UIButton!
    @IBOutlet weak var nextTrack: UIButton!
    @IBOutlet weak var albumName: UILabel!
    @IBOutlet weak var shuffleButton: UIButton!
    @IBOutlet weak var repeatButton: UIButton!

    override func viewDidLoad(){
        downloadedTracks = CommonUtils.fetchAudioPaths()
        if (UserDefaults.standard.object(forKey: "AudioItems") as? Data) != nil {
            self.serviceAudioItems = UserDefaults.standard.retrieve(object: Array

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...