iTunes AppObjC Swift Mirror State - PullRequest
0 голосов
/ 15 марта 2019

У меня есть мост AppleScript для Swift, и мои яблочные скрипты вызываются через приложение Swift AppDelegate. Проект представляет собой контроллер для iTunes. Кнопки (например, воспроизведение / пауза, быстрая перемотка вперед, перемотка назад) работают, но я не уверен, как заставить кнопку воспроизведения / паузы изменять состояние в зависимости от состояния проигрывателя iTunes (т. Е. Если iTunes воспроизводит, кнопка воспроизведения / паузы моего приложения должна показать символ паузы). Это должно измениться не только когда я нажимаю кнопку в приложении, но и когда я взаимодействую только с iTunes.

1 Ответ

0 голосов
/ 15 марта 2019

Установите начальное состояние кнопок или чего-либо еще и зарегистрируйте наблюдателя для распределенных уведомлений iTunes:

let center = DistributedNotificationCenter.default()
center.addObserver(self,
                   selector:#selector(updatePlayerInfo),
                   name:NSNotification.Name("com.apple.iTunes.playerInfo"),
                   object:nil)

Затем используйте соответствующие ключи в userInfo уведомления для обновления по мере продвижения:

@objc func updatePlayerInfo(_ notification: Notification) {
  print(notification.userInfo?["Player State"] as! String) // example
}

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

...