Свифт | macOS | Получение названия трека и исполнителя текущей музыки - PullRequest
0 голосов
/ 03 мая 2020

Я приступил к мини-проекту, чтобы попытаться научиться писать Swift. Я подумал, что было бы полезно написать приложение MacOS , которое отображало бы название воспроизводимой дорожки и информацию об исполнителе в строке меню. На данный момент я должен открыть рассматриваемое приложение, будь то Spotify, Apple Musi c или Tidal, что нарушает рабочий процесс.

Учитывая, что виджет уведомлений new-i sh «Сейчас исполняется» отображает это уже (независимо от источника звука), я подумал, что было бы довольно просто сделать что-то подобное для строки меню.

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

Что касается кода, который я обнаружил nowPlayingInfo что говорит о том, что это может сделать то, что я хочу, но я потратил 4 часа, пытаясь заставить его работать безуспешно. Я также посмотрел на MPNowPlayingCenter , но, похоже, не дал результата.

Похоже, что есть большая помощь относительно настройки Сейчас играет информация, но очень мало относительно получения / get информации.

Пока мне удалось написать код для добавления текста в строку меню:

    func applicationDidFinishLaunching(_ aNotification: Notification) {

        let statusBar = NSStatusBar.system
        statusBarItem = statusBar.statusItem(
            withLength: NSStatusItem.variableLength)
        statusBarItem.button?.title = "This should be a string of the track name and artist"

    }

Я также собрал фрагменты потенциально полезного кода:

        // var nowPlayingInfo: [String : Any](? {})
        // let MPMediaItemPropertyTitle: String
        // let MPMediaItemPropertyArtist: String

        // static let MPMusicPlayerControllerNowPlayingItemDidChange: NSNotification.Name
        // MPNowPlayingPlaybackState

        // class var applicationMusicPlayer: MPMusicPlayerController { get }

        // class MPNowPlayingInfoCenter : NSObject
        // let nowPlaying = MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo
        // let trackName = nowPlaying.valueForProperty(MPMediaItemPropertyTitle) as String

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

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