2014-04-30 5 views
3

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

Любые идеи?

Спасибо.

ответ

1

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

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

Меня не интересует продолжительность ... Скорее всего время воспроизведения и даты для каждого элемента песни – user3350794

1

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

+0

PS. Извините, я опоздал на этот год с этим ответом, но сейчас я начал работать над этим. Возможно, вы уже поняли это для себя. Я не нашел много способов в сети, так что это все равно может помочь кому-то –