0

我正在调整一个分叉的 TouchBar 应用程序,它在 Mac TouchBar 上显示小部件,并试图让专辑封面显示在 NowPlaying 小部件上。这就是项目

目前,我对这段代码有疑问:

- (void)updateInfo
{
    MRMediaRemoteGetNowPlayingInfo(dispatch_get_main_queue(),
        ^(NSDictionary *info)
        {
            NSString *album = [info objectForKey:kMRMediaRemoteNowPlayingInfoAlbum];
            NSString *artist = [info objectForKey:kMRMediaRemoteNowPlayingInfoArtist];
            NSString *title = [info objectForKey:kMRMediaRemoteNowPlayingInfoTitle];
            NSData *artworkData = [info objectForKey:kMRMediaRemoteNowPlayingInfoArtworkData];
        
        NSImage *albumart = nil;
        if (nil != artworkData && ![artworkData isEqual:[NSNull null]])
        {
            albumart = [[NSImage alloc] initWithData:artworkData];
        }
        
        if (nil != albumart)
        {
            self.appIcon = albumart;
        }
        
        if (self.album != album || self.artist != artist || self.title != title || self.albumArt != albumart)
        {
            self.album = album;
            self.artist = artist;
            self.title = title;
            self.albumArt = albumart;

            [[NSNotificationCenter defaultCenter]
                postNotificationName:NowPlayingInfoNotification
                object:self];
        }
    });
}

我遇到的主要问题是专辑封面数据仅在歌曲开始后显示大约半秒钟,然后消失。我的理论是 kMRMediaRemoteNowPlayingInfoArtworkData 用于获取艺术品数据是错误的,但我可能是错的。

4

1 回答 1

0

发现如果从通知中心拉出,Spotify 和音乐不会立即更新他们的专辑封面数据。解决办法是加一个50ms左右的延迟。

于 2021-03-19T19:03:40.480 回答