2012-03-01 18 views
26

Tôi đang làm việc để cập nhật MPNowPlayingInfoCenter và gặp một chút rắc rối. Tôi đã thử một chút đến mức tôi đang thua lỗ. Sau đây là mã của tôi:MPNowPlayingInfoCenter defaultCenter sẽ không cập nhật hoặc truy xuất thông tin

self.audioPlayer.allowsAirPlay = NO; 

    Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter"); 

    if (playingInfoCenter) { 

     NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init]; 

     MPMediaItemArtwork *albumArt = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"series_placeholder"]]; 

     [songInfo setObject:thePodcast.title forKey:MPMediaItemPropertyTitle]; 
     [songInfo setObject:thePodcast.author forKey:MPMediaItemPropertyArtist]; 
     [songInfo setObject:@"NCC" forKey:MPMediaItemPropertyAlbumTitle]; 
     [songInfo setObject:albumArt forKey:MPMediaItemPropertyArtwork]; 

     [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo]; 


    } 

này không làm việc, tôi cũng đã cố gắng:

[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:nil]; 

Trong một nỗ lực để có được nó để loại bỏ các thông tin hiện có từ các ứng dụng iPod (hoặc bất kỳ có thể có thông tin ở đó). Bên cạnh đó, chỉ để xem nếu tôi có thể tìm ra được vấn đề, tôi đã cố gắng lấy thông tin hiện hành về ra mắt ứng dụng:

NSDictionary *info = [[MPNowPlayingInfoCenter defaultCenter] nowPlayingInfo]; 
    NSString *title = [info valueForKey:MPMediaItemPropertyTitle]; 
    NSString *author = [info valueForKey:MPMediaItemPropertyArtist]; 

    NSLog(@"Currently playing: %@ // %@", title, author); 

và tôi nhận được Currently playing: (null) // (null)

Tôi đã nghiên cứu này khá một chút và các bài viết sau đây giải thích nó khá kỹ lưỡng, tuy nhiên, tôi vẫn không thể làm việc này đúng cách. Tui bỏ lỡ điều gì vậy? Sẽ có bất cứ điều gì can thiệp với điều này? Đây có phải là dịch vụ mà ứng dụng của tôi cần đăng ký để truy cập (không thấy điều này trong bất kỳ tài liệu nào) không?

Apple's Docs

Change lock screen background audio controls

Now playing info ignored

+1

là phương tiện truyền thông chơi khi mã này thực hiện? – Ravin

+0

Tôi đã thử với phát âm thanh (qua MPMoviePlayer) và không có cùng kết quả –

+0

in [MPNowPlayingInfoCenter defaultCenter] bằng nslog. Trong tài liệu họ nói: Trung tâm thông tin hiện đang chơi mặc định giữ thông tin đang phát cho ứng dụng được chỉ định làm người nhận cho các sự kiện điều khiển từ xa. Bạn đang phát phương tiện trên một số thiết bị từ xa? đảm bảo phương tiện đang phát trên một số thiết bị từ xa. Bởi vì các tài liệu nói: Các sự kiện điều khiển từ xa cho phép người dùng điều khiển đa phương tiện ứng dụng thông qua các điều khiển vận chuyển hệ thống hoặc thông qua một phụ kiện bên ngoài. – Ravin

Trả lời

52

cuối cùng tôi đã tìm ra được vấn đề, tôi đã không thúc đẩy ứng dụng của tôi để nhận được các sự kiện điều khiển từ xa, chỉ cần thêm dòng này khắc phục được vấn đề:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
+0

Làm tốt lắm. – tounaobun

+0

Tôi gặp phải sự cố tương tự. Mặc dù tôi thực hiện tất cả các phương pháp trên, tôi không nhận được sự kiện kiểm soát. http://stackoverflow.com/questions/43973602/unable-to-receive-remotecontrolreceivedwithevent-objective-c-ios –

2

tôi sử dụng mã dưới đây và nó luôn luôn hoạt động. Tôi cũng đang sử dụng MPMoviePlayer như bạn. Bạn đã kiểm tra xem liệu NSClassFromString(@"MPNowPlayingInfoCenter") có thực sự trả về YES không? Bạn đã đặt âm thanh phát ứng dụng trong khóa nền trong plist của bạn chưa?

- (void) loadMPInformation 
{ 
    NSDictionary *mpInfo; 

    if([savedTrack.belongingAlbum.hasAlbumArt boolValue] == NO){ 
     mpInfo = [NSDictionary dictionaryWithObjectsAndKeys:savedTrack.belongingAlbum.album, MPMediaItemPropertyAlbumTitle, 
        savedTrack.belongingArtist.artist, MPMediaItemPropertyArtist, savedTrack.name, MPMediaItemPropertyTitle, nil]; 
    } else { 
     UIImage *artImage = [UIImage imageWithData:savedTrack.belongingAlbum.art]; 
     MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:artImage]; 
     mpInfo = [NSDictionary dictionaryWithObjectsAndKeys:savedTrack.belongingAlbum.album, MPMediaItemPropertyAlbumTitle, 
        savedTrack.belongingArtist.artist, MPMediaItemPropertyArtist, savedTrack.name, MPMediaItemPropertyTitle, artwork, MPMediaItemPropertyArtwork, nil]; 
    } 
    [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = mpInfo; 

} 
+0

Vâng, tôi đã kiểm tra xem nó có trả về YES hay không, tôi cũng đã cài đặt âm thanh phát trong ứng dụng ... –

+3

Chờ. Bạn đã thử điều này trên thiết bị hoặc trên trình mô phỏng chưa? Nguyên nhân nó không bao giờ hoạt động trong trình mô phỏng tôi đã nhận thấy. – deleterOfWorlds

+0

Tôi chỉ đang thử trên thiết bị ... bạn có phải đăng ký để nhận thông báo từ nút phát/tạm dừng không? –

Các vấn đề liên quan