2014-04-28 51 views
0

在基本音頻AVPlayer實例中,我們播放HLS流並設置正在播放信息(成功),但無法訪問正在設置的MPNowPlayingInfoCenter的屬性。檢索/更新單個MPNowPlayingInfoCenter屬性

categoryactive我們的AVAudioSession的狀態和receiving remote control events也沒有問題。

NSMutableDictionary *properties = [[NSMutableDictionary alloc] init]; 
[properties setObject:title forKey:MPMediaItemPropertyTitle]; 
// Set several other properties 

MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter]; 
[center setNowPlayingInfo:properties]; 

// Works! The lock screen successfully shows the title and other properties 

NSLog("%@", [center nowPlayingInfo]); 

NSLog打印只含0MPNowPlayingInfoPropertyPlaybackRate非常默認的前瞻性詞典 - 這是不準確的反正作爲音頻播放日誌中回來。

我們想要retrieve the currently-set dictionary of properties,更新一些,並重新設置它們(如專輯封面更新,播放/暫停時間等)。我們缺少什麼?

回答

0

嘗試以下操作以檢索當前屬性;

NSMutableDictionary *playInfo = [NSMutableDictionary dictionaryWithDictionary:[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo] ; 

並設置/更新屬性如下;

[playInfo setObject:[NSNumber numberWithFloat: 1.0f] forKey:MPNowPlayingInfoPropertyPlaybackRate]; 
[playInfo setObject:[NSNumber numberWithDouble:songDuration] forKey:MPMediaItemPropertyPlaybackDuration]; 

[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = playInfo; 
+0

謝謝@ MDB983-但這是我在上面的前6行設置值相同的方法。當你在你的代碼之後登錄'[[MPNowPlayingInfoCenter defaultCenter] nowPlayingInfo]',你是否打印出完整的功能集? – jterry

+0

我可以檢查我的代碼中的斷點,並且是的,playInfo顯示一些鍵/值對。顯然,這些是你以前設置的值。 – MDB983

+0

這是我剛剛從一名玩家手中奪走的一張日誌。 info { MPNowPlayingInfoPropertyPlaybackRate = 1; artist =「Corinne Bailey Rae」; artwork =「」; playbackDuration =「215.4579591836735」; title =「把你的記錄放在」; }所有這些屬性都是以前在別處設置的。 – MDB983