iOS 12.2 MPMusicPlayerController сообщает о неверном состоянии воспроизведения - PullRequest
1 голос
/ 08 апреля 2019

MPMusicPlayerController сообщает о состоянии воспроизведения как приостановленном, когда песня достигает конца, а также сообщает о состоянии воспроизведения как приостановленном после постановки в очередь песни, даже после явного вызова .Stop().

Это поведение не существовало ранее, и теперь вызывает проблемы для моего кода очередей, который использует проверку для playbackState == .stopped.

Я установил обработчик центра уведомлений для MPMusicPlayerControllerPlaybackStateDidChange, который вызывает функцию, которая проверяет, является ли состояние воспроизведения .stopped, которая, в свою очередь, вызывает функцию делегата для оповещения о других аспектах моего приложения (состояние транспорта, удаление песни из очередь приложения, очередь на следующую дорожку и т. д.), которую песня завершила.

Это поведение было хорошо до этого обновления.

Может кто-нибудь рассказать мне о выпуске, объясняющем изменение, или дать руководство о том, как правильно определить конец песни?

Я попытался сравнить текущую позицию воспроизведения с продолжительностью песни, но они никогда не совпадают. Текущая позиция воспроизведения всегда на пару секунд короче продолжительности. Я попытался сравнить TimeIntervals (слишком высокое разрешение), а также использовать средство форматирования для преобразования их в строку и сравнить его (учитывая, что время правильно отображается в пользовательском интерфейсе).

Я должен также упомянуть, что я пытался проверить, что nowPlayingItem равен нулю, но текущий трек не удален (также часть проблемы, но я рассматриваю их как связанные в данный момент).

1 Ответ

0 голосов
/ 08 апреля 2019

Я не уверен, почему изменилось поведение, я не могу найти ничего в примечаниях к патчу. Однако вы должны иметь возможность поставить в очередь текущую и следующую песню, используя setQueueWithItemCollection, и использовать событие MPMusicPlayerControllerNowPlayingItemDidChange для обновления очереди вместо установки одной песни за раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...