Как сохранить состояние текущего MPMediaItem и реагировать на измененное значение при выходе на передний план

Итак, я пытаюсь разработать музыкальную игру, использующую музыкальную библиотеку iPod. Пользователь выбирает песню на основе подсказки. Поскольку я использую [MPMusicPlayerController iPodMusicPlayer], возможно, пользователь изменил песню в приложении iPod, прежде чем вернуться в приложение. Если это так, я хочу, чтобы он вызывал [musicPlayer stop]. К сожалению, я не могу понять, как сохранить текущую воспроизводимую песню и сравнить ее с текущей воспроизводимой песней, когда приложение возвращается из фонового режима. Проверьте код ниже.

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSString *persistantID = [musicPlayer.nowPlayingItem valueForProperty:MPMediaItemPropertyPersistentID];
    [prefs setValue:persistantID forKey:@"NOWPLAYING_ID"];

}

И

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSString *persistantID = [prefs stringForKey:@"NOWPLAYING_ID"];
    if (persistantID == [musicPlayer.nowPlayingItem valueForProperty:MPMediaItemPropertyPersistentID]) {
    }
    else {
        [musicPlayer stop];
    }
    [prefs setValue:nil forKey:@"NOWPLAYING_ID"];

}

Может ли кто-нибудь дать мне руку? Большое спасибо.


person Dylan Gattey    schedule 20.06.2011    source источник


Ответы (1)


person    schedule
comment
Как мне сохранить медиафайл, когда он приостановлен? И почему я не могу вместо этого просто сохранить постоянный идентификатор элемента мультимедиа? Однако в этом есть большой смысл. Спасибо. - person Dylan Gattey; 21.06.2011
comment
Конечно, вместо этого сохраните постоянный идентификатор. Просто добавьте NSNumber *previousItem в файл заголовка вместо MPMediaItem *mediaItemSavedWhenAppSuspended. - person amergin; 21.06.2011
comment
Хорошая попытка, но if([currentSavedPersistantID compare:self.savedPersistantID] == NSOrderedSame) { } выдает исключение. Вы уверены, что ID - это число? Я думал, что это NSString, но это тоже не работает. - person Dylan Gattey; 22.06.2011
comment
Догадаться. Это может быть строка (может быть, и число), и я только что сделал if (self.savedPersistantID) {}, чтобы проверить значение только в том случае, если оно существует. Глупый я :) Спасибо за вашу помощь! - person Dylan Gattey; 22.06.2011