3

Apple docには、「有効なプロパティを NO に設定することで、対応する MPRemoteCommand オブジェクトを無効にできます」と記載されています。

MPNowPlayingInfoCenterにポッドキャスト コントロールを強制的に表示するパブリックな方法はありますか? ロック画面コントロールで特定のコマンドを無効/有効にすることができました。

ただし、ラジオを再生していて、「再生/一時停止/次/前」のいずれのアクションもサポートしていないため、ロック画面コントロールからすべてのコントロールを無効にしたい

次のコードスニペットを試しました:

MPRemoteCommandCenter *remoteCommandCenter = [MPRemoteCommandCenter sharedCommandCenter];
remoteCommandCenter.previousTrackCommand.enabled = NO;
[remoteCommandCenter.previousTrackCommand removeTarget:self];
remoteCommandCenter.nextTrackCommand.enabled = NO;
[remoteCommandCenter.nextTrackCommand removeTarget:self];
            
remoteCommandCenter.skipBackwardCommand.enabled = NO;
[remoteCommandCenter.skipBackwardCommand removeTarget:self];
remoteCommandCenter.skipForwardCommand.enabled = NO;
[remoteCommandCenter.skipForwardCommand removeTarget:self];
            
remoteCommandCenter.bookmarkCommand.enabled = NO;
[remoteCommandCenter.bookmarkCommand removeTarget:self];

remoteCommandCenter.playCommand.enabled = NO;
[remoteCommandCenter.playCommand removeTarget:self];
            
remoteCommandCenter.pauseCommand.enabled = NO;
[remoteCommandCenter.pauseCommand removeTarget:self];

しかし、うまくいきませんでした。すべてを無効にすると、ロック画面の一時停止、前、次のボタンが有効になります。どんな助けでも大歓迎です。

4

1 に答える 1

6

MPRemoteCommandはい "有効なプロパティを NO に設定することで、対応するオブジェクトを無効にできます。"

ただし、すべてのボタンを無効にしている場合は、ターゲットを削除したり、おそらく何もしないターゲットを追加したりしないでください。これを行う必要がある理由を説明するドキュメントはありませんが、このように機能します。

次のコードを試してみてください。

MPRemoteCommandCenter *remoteCommandCenter = [MPRemoteCommandCenter sharedCommandCenter];
remoteCommandCenter.previousTrackCommand.enabled = NO;
remoteCommandCenter.nextTrackCommand.enabled = NO;
remoteCommandCenter.skipBackwardCommand.enabled = NO;
remoteCommandCenter.skipForwardCommand.enabled = NO;
remoteCommandCenter.bookmarkCommand.enabled = NO;
remoteCommandCenter.playCommand.enabled = NO;
remoteCommandCenter.pauseCommand.enabled = NO;


[remoteCommandCenter.previousTrackCommand addTarget:self action:@selector(actionDoNothing:)];
[remoteCommandCenter.nextTrackCommand addTarget:self action:@selector(actionDoNothing:)];
[remoteCommandCenter.skipBackwardCommand addTarget:self action:@selector(actionDoNothing:)];
[remoteCommandCenter.skipForwardCommand addTarget:self action:@selector(actionDoNothing:)];
[remoteCommandCenter.bookmarkCommand addTarget:self action:@selector(actionDoNothing:)];
[remoteCommandCenter.playCommand addTarget:self action:@selector(actionDoNothing:)];
[remoteCommandCenter.pauseCommand addTarget:self action:@selector(actionDoNothing:)];
于 2016-08-22T13:59:18.647 に答える