How To Get Information About Now Playing Song In Swiftui

[Solved] How To Get Information About Now Playing Song In Swiftui | Swift - Code Explorer | yomemimo.com
Question : how to get information about now playing song in swiftui mac

Answered by : rohan-patel-rqz0zer3zml0

// Load framework
let bundle = CFBundleCreate(kCFAllocatorDefault, NSURL(fileURLWithPath: "/System/Library/PrivateFrameworks/MediaRemote.framework"))
// Get a Swift function for MRMediaRemoteGetNowPlayingInfo
guard let MRMediaRemoteGetNowPlayingInfoPointer = CFBundleGetFunctionPointerForName(bundle, "MRMediaRemoteGetNowPlayingInfo" as CFString) else { return }
typealias MRMediaRemoteGetNowPlayingInfoFunction = @convention(c) (DispatchQueue, @escaping ([String: Any]) -> Void) -> Void
let MRMediaRemoteGetNowPlayingInfo = unsafeBitCast(MRMediaRemoteGetNowPlayingInfoPointer, to: MRMediaRemoteGetNowPlayingInfoFunction.self)
// Get a Swift function for MRNowPlayingClientGetBundleIdentifier
guard let MRNowPlayingClientGetBundleIdentifierPointer = CFBundleGetFunctionPointerForName(bundle, "MRNowPlayingClientGetBundleIdentifier" as CFString) else { return }
typealias MRNowPlayingClientGetBundleIdentifierFunction = @convention(c) (AnyObject?) -> String
let MRNowPlayingClientGetBundleIdentifier = unsafeBitCast(MRNowPlayingClientGetBundleIdentifierPointer, to: MRNowPlayingClientGetBundleIdentifierFunction.self)
// Get song info
MRMediaRemoteGetNowPlayingInfo(DispatchQueue.main, { (information) in NSLog("%@", information["kMRMediaRemoteNowPlayingInfoArtist"] as! String) NSLog("%@", information["kMRMediaRemoteNowPlayingInfoTitle"] as! String) NSLog("%@", information["kMRMediaRemoteNowPlayingInfoAlbum"] as! String) NSLog("%@", information["kMRMediaRemoteNowPlayingInfoDuration"] as! String) let artwork = NSImage(data: information["kMRMediaRemoteNowPlayingInfoArtworkData"] as! Data) // Get bundle identifier let _MRNowPlayingClientProtobuf: AnyClass? = NSClassFromString("_MRNowPlayingClientProtobuf") let handle : UnsafeMutableRawPointer! = dlopen("/usr/lib/libobjc.A.dylib", RTLD_NOW) let object = unsafeBitCast(dlsym(handle, "objc_msgSend"), to:(@convention(c)(AnyClass?,Selector?)->AnyObject).self)(_MRNowPlayingClientProtobuf,Selector("a"+"lloc")) unsafeBitCast(dlsym(handle, "objc_msgSend"), to:(@convention(c)(AnyObject?,Selector?,Any?)->Void).self)(object,Selector("i"+"nitWithData:"),information["kMRMediaRemoteNowPlayingInfoClientPropertiesData"] as AnyObject?) NSLog("%@", MRNowPlayingClientGetBundleIdentifier(object)) dlclose(handle)
})

Source : https://stackoverflow.com/questions/61003379/how-to-get-currently-playing-song-on-mac-swift | Last Update : Thu, 15 Sep 22

Answers related to how to get information about now playing song in swiftui mac

Code Explorer Popular Question For Swift