我想在某个时间段内获得歌曲的收听时间。使用MPMediaItemPropertyLastPlayedDate
我只获取最后一次播放歌曲的日期,因此如果我每天多次播放歌曲,则只有最后一次才会计算在内。基本上,我想做的是在某个时期(例如最后两天)获取用户的收听历史记录。此外,MPMediaItemPropertyPlayCount
我还获得了总体播放次数。
有任何想法吗?
谢谢。
我想在某个时间段内获得歌曲的收听时间。使用MPMediaItemPropertyLastPlayedDate
我只获取最后一次播放歌曲的日期,因此如果我每天多次播放歌曲,则只有最后一次才会计算在内。基本上,我想做的是在某个时期(例如最后两天)获取用户的收听历史记录。此外,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 可以为零(以前从未播放过这首歌)。
此代码正在对我的整个库 5K 歌曲进行全面检查,大约需要 3 秒。就我而言,我只对“自从”以来的游戏历史感兴趣
使用它来获取 MPMediaItem 的持续时间。
MPMediaItem *song;
NSNumber *duration= [song valueForProperty:MPMediaItemPropertyPlaybackDuration];