2011-06-27 28 views
4

我試圖訪問SBMediaController,但我的應用程序只是崩潰。我的目標是停止任何播放音樂應用程序在後臺與[[[SBMediaController] sharedInstance] stop]如何使用SBMediaController - 總是拋出「找不到符號」

我使用私人頭來訪問privateframeworks,並可以使用GSLockDevice()來鎖定屏幕,所以我認爲我的導入應finde。我注意到在GraphicServices.framework之類的私人框架中沒有SpringBoard.framework,這可能是問題嗎? 我的錯誤:

dyld: Symbol not found: _OBJC_CLASS_$_SBMediaController 
Referenced from: /var/mobile/Applications/D1CB0D98-1858-406C-AF4B 254BBEA7A73D/iTest.app/iTest 
Expected in: flat namespace 
+0

我有同樣的問題試圖使用UINibDecoder,因爲UIKit不存在作爲私人框架。 – Eli

回答

2

你不能連接SpringBoard。您可以選擇使用objc_getClass()像這樣在運行時獲取類:

SBMediaController *controller = [objc_getClass("SBMediaController" sharedInstance]; 

順便說一句,如果你的代碼在運行的跳板(又名一個「好辦法」或MobileSubstrate有擴展),這隻會工作。如果你的代碼運行在它自己的應用程序中(這是你的情況),你應該使用Apple提供的MediaPlayer框架。

+0

如何使用該框架查明是否有來自任何應用的音樂正在播放?沒有找到一種方法,例如使用'MPNowPlayingInfoCenter'來實現... – Clawish