如何获取MPMediaItem(歌曲)收听时间(日期)



我想知道某段时间内歌曲的收听次数。使用MPMediaItemPropertyLastPlayedDate,我只会得到最后一次播放歌曲的日期,所以如果一首歌一天播放多次,那么只有最后一次才算数。基本上,我想做的是获取用户在某个时间段(例如最近2天(的收听历史还有MPMediaItemPropertyPlayCount,我得到了总播放次数。

有什么想法吗?

谢谢。

我现在正在处理这个问题。我的(Swift代码(是:

func getPlaysSince(since:NSDate, onSuccess: (tracks: [MediaItem])->(), onFail: (error: NSError?)->()) {
    var rValue = [MediaItem]()
    let timeInterval = since.timeIntervalSince1970
    let query = MPMediaQuery.songsQuery()
    let songs = query.items
    Logger.logMessage(domain: "Data", level: .Minor, "Checking (songs.count) songs for those since (since)")
    let then = NSDate()
    for song in songs {
        if let lastPlayedDate = song.lastPlayedDate {
            if lastPlayedDate != nil {
                if lastPlayedDate.timeIntervalSince1970 > timeInterval {
                    Logger.logMessage(domain: "Data", level: .Minor, "(song.title) at (lastPlayedDate)")
                    let item:MediaItem = MediaItem(mediaItem: song as! MPMediaItem)
                    rValue.append(item)
                }
            }
        }
    }
    let taken = NSDate().timeIntervalSinceDate(then)
    Logger.logMessage(domain: "Data", level: .Minor, "scanned in (taken) seconds")
    onSuccess(tracks: rValue)
}

我已经包含了我的整个函数,尽管关键行是要查询的任务、歌曲和歌曲,然后是检查lastPlayedDate。lastPlayedDate可以是nil(以前从未播放过这首歌(。

这段代码正在对我的整个库5K歌曲进行全面检查,大约需要3秒钟。就我而言,我只对"自"以来的游戏历史感兴趣

使用它可以获取MPMediaItem的持续时间。

MPMediaItem *song;
NSNumber *duration= [song valueForProperty:MPMediaItemPropertyPlaybackDuration];

相关内容

  • 没有找到相关文章

最新更新