iphone – 如何使用SBMediaController – 总是抛出“未找到符号”

我正在尝试访问SBMediaController,但我的应用程序崩溃了.我的目标是使用[[[SBMediaController] sharedInstance]停止后台停止任何播放音乐应用程序

我使用私有标头来访问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

最佳答案 您无法与SpringBoard链接.你必须在运行时使用objc_getClass()来获取类,如下所示:

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

顺便说一句,这只有在你的代码在SpringBoard中运行时才有效(也就是’tweak’或MobileSubstrate扩展).如果您的代码在其自己的应用程序中运行(这是您的情况),则应使用Apple提供的MediaPlayer框架.

点赞