Как получить время прослушивания MPMediaItem (песни) (даты)

Я хочу получить время прослушивания песни за определенный период. Используя MPMediaItemPropertyLastPlayedDate, я получаю только дату последнего воспроизведения песни, поэтому, если я воспроизвожу песню несколько раз в день, будет учитываться только последний раз. По сути, я хочу получить историю прослушивания пользователя за определенный период (например, за последние 2 дня). Также с помощью MPMediaItemPropertyPlayCount я получаю общее количество воспроизведений в целом.

Любые идеи?

Спасибо.


person user3350794    schedule 30.04.2014    source источник


Ответы (2)


Я работаю с этим прямо сейчас. Мой (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 секунд. В моем случае меня интересует только история моей игры с тех пор, как

person Derek Knight    schedule 24.05.2015
comment
PS. Извините, я опоздал с этим ответом примерно на год, но я только начал работать над этим сегодня. Возможно, вы уже поняли это для себя. Я не нашел много практических советов в сети, так что это все еще может кому-то помочь - person Derek Knight; 24.05.2015

Используйте это, чтобы получить продолжительность MPMediaItem.

MPMediaItem *song;
NSNumber *duration= [song valueForProperty:MPMediaItemPropertyPlaybackDuration];
person Cody Robertson    schedule 01.05.2014
comment
Меня не интересует продолжительность... Скорее только время и даты воспроизведения для каждого элемента песни. - person user3350794; 01.05.2014