2012-10-06 2 views
1

은 내가 앱이 바로 전경에 있지만 동안 아이팟, 테스트가 좋은 작동하고 지금 재생 항목 (노래를) 변경하면 응용 프로그램이 점점 중지 배경에 간다 알림을 받으려면이 테스트 응용 프로그램을하고 있어요 알림을 다시 올리면 (전경) 앱이 백그라운드에서 실행되는 동안 항상 변경된 모든 시간에 따라 모든 알림을 받지만 동일한 곡 정보를 얻을 때마다 어떻게 할 수 있습니까? 각 알림에 대해 올바른 노래 정보를 얻을 수 있습니까?백그라운드에서 MPMusicPlayerControllerNowPlayingItemDidChangeNotification을받는 방법?

이것은 AppDelegate에에서 내가 한 테스트입니다 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; 
    MPMusicPlayerController *player = [MPMusicPlayerController iPodMusicPlayer]; 

    [notificationCenter addObserver:self 
          selector:@selector(nowPlayingItemChanged:) 
           name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification 
          object:player]; 

    [player beginGeneratingPlaybackNotifications]; 

    return YES; 
} 

-(void) nowPlayingItemChanged:(NSNotification *)notification { 
    MPMusicPlayerController *player = (MPMusicPlayerController *)notification.object; 

    MPMediaItem *song = [player nowPlayingItem]; 

    if (song) { 
     NSString *title = [song valueForProperty:MPMediaItemPropertyTitle]; 
     NSString *album = [song valueForProperty:MPMediaItemPropertyAlbumTitle]; 
     NSString *artist = [song valueForProperty:MPMediaItemPropertyArtist]; 
     NSString *playCount = [song valueForProperty:MPMediaItemPropertyPlayCount]; 

     NSLog(@"title: %@", title); 
     NSLog(@"album: %@", album); 
     NSLog(@"artist: %@", artist); 
     NSLog(@"playCount: %@", playCount); 
    } 
} 

답변

1

이 매우 제한되어 백그라운드에서 옵션을 게시 참조 :

StackOverFlow Post

그리고 애플 문서는 그 상태에 대한 정말 수 없습니다 : Apple Documentation on Background states

+0

예,이 한계를 알고, 난 그냥 내가 잘 받고있어 대기 알림을 처리 할하지만 플레이어에서 nowPlayingItem를 검색 할 때, 그것은 항상이다, 백그라운드에서 아무것도하고 싶지 않아 같은 아이템? 당신은 당신이 그것을 가능 나타나지 않는 것을 볼 수 게시 된 문서의 링크를 보면 ... 각 통지 – Geykel

+0

을 실제 항목 (실제 노래 연주)를 얻을 수있는 방법이 있다면 내가 알고 싶은 것은. –

+0

여전히 가능하지 않습니까? – evenodd

-1

때 관찰자를 제거하십시오 배경으로 들어가기 :

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:musicPlayer];[player endGeneratingPlaybackNotifications]; 

전경을 입력 할 때 다시 추가하십시오.

+0

이 문제가 어떻게 해결됩니까? –

관련 문제