현재 iOS 시스템 플레이어에서 재생중인 노래의 가사를 표시하고 싶습니다. nowPlaying
항목에서가사 가져 오는 방법 iOS10 (Swift 3)에서 노래 재생
import UIKit
import MediaPlayer
import AVFoundation
class NowPlayingController: NSObject {
var musicPlayer: MPMusicPlayerController {
if musicPlayer_Lazy == nil {
musicPlayer_Lazy = MPMusicPlayerController.systemMusicPlayer()
let center = NotificationCenter.default
center.addObserver(self,
selector: #selector(self.playingItemDidChange),
name: NSNotification.Name.MPMusicPlayerControllerNowPlayingItemDidChange,
object: musicPlayer_Lazy)
musicPlayer_Lazy!.beginGeneratingPlaybackNotifications()
}
return musicPlayer_Lazy!
}
private var musicPlayer_Lazy: MPMusicPlayerController?
var nowPlaying: MPMediaItem?
//If song changes
func playingItemDidChange(notification: NSNotification) {
nowPlaying = musicPlayer.nowPlayingItem
}
}
얻으려면 가사 나는이 방법을 시도하고 항상 반환 nil
모두했습니다
여기 내 사용자 지정 플레이어입니다. 포함
let songUrl = nowPlaying?.value(forProperty: MPMediaItemPropertyAssetURL) as? NSURL as URL?
if songUrl != nil {
let songAsset = AVURLAsset(url: songUrl!, options: nil)
lyricsText = songAsset.lyrics
모든 노래가 장치 (iTunes에서 동기화)됩니다
let lyricsText = nowPlaying?.value(forProperty: MPMediaItemPropertyLyrics) as? NSString as String?
코드
는MPMediaItemPropertyAssetURL
를 다음에서 항상nil
대신 실제 URL의 반환이 코드는 항상 nil을 반환 가사 (시스템 플레이어에 표시됨) 및 DRM으로 보호되지 않은 (찢어진 aac/mp3).
내가 실제 장치에서이 테스트를하고있어
: 아이폰 기가/아이폰 OS 10.3
내가 가사를 얻을 수있는 방법 어떤 제안 또는 왜 MPMediaItemPropertyAssetURL이 전무를 반환?
요즘, 대부분의 아이튠즈의 콘텐츠는 페어 플레이의 DRM으로 보호 또는 애플의 음악 (도 페어 플레이에 의해 보호 몰라?.) 항상이 유형의 콘텐츠입니다 중 'MPMediaItemPropertyAssetURL'을 반환하지 않습니다. iOS가 음악을 재생하는 "주크 박스"방식으로 만 사용해야합니다. 보다 정교한 유스 케이스는 불가능합니다. –
아래에서이 방법을 사용해 보셨습니까? 'let lyric = nowPlaying? .lyrics는 assetUrl = nowPlaying? .assetURL' 또한 – Bluewings
@RhythmicFistman을 주목합니다. 내 콘텐츠가 iTunes Store 콘텐츠가 아니기 때문에 그렇지 않습니다. 그러나 나는 어쨌든'false' (노래에 DRM이 없음을 의미)를 반환하는 다음과 같은 방법으로 double을 체크했다 :'nowPlaying? .hasProtectedAsset' – dandepeched