4

SBMediaController にアクセスしようとしていますが、アプリがクラッシュします。私の目標は、バックグラウンドで再生中の音楽アプリを停止することです[[[SBMediaController] sharedInstance] stop]

プライベート ヘッダーを使用してプライベート フレームワークにアクセスし、GSLockDevice() を使用して画面をロックできるので、インポートは finde である必要があると思います。GraphicServices.framework のような privateframeworks に 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
4

1 に答える 1

2

SpringBoardとリンクすることはできません。次のようにobjc_getClass()を使用して、実行時にクラスを取得する必要があります。

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

ちなみに、これはコードがSpringBoard(別名「微調整」またはMobileSubstrate拡張機能)で実行されている場合にのみ機能します。コードが独自のアプリで実行されている場合(これはあなたの場合です)、Appleが提供するMediaPlayerフレームワークを使用する必要があります。

于 2012-06-05T19:14:12.567 に答える