アプリでバックグラウンドで音楽を再生するようにしました。また、BeginRecomingRemoteControlEvents を呼び出して、アプリをメディア プレーヤーにすることにも成功しました。ただし、RemoteControlReceived メソッドが呼び出されることはありません。Objective C の同じロジックが正常に機能しています。サンプルやガイドラインをいただければ幸いです。
2 に答える
後のメカニズムを使用して、リモート コントロール イベントをリッスンすることをお勧めします。たとえば、ヘッドセットのボタンを聞きたい場合:
MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];
[commandCenter.togglePlayPauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {
NSLog(@"toggle button pressed");
return MPRemoteCommandHandlerStatusSuccess;
}];
または、ブロックの代わりにメソッドを使用する場合:
[commandCenter.togglePlayPauseCommand addTarget:self action:@selector(toggleButtonAction)];
止まる:
[commandCenter.togglePlayPauseCommand removeTarget:self];
また:
[commandCenter.togglePlayPauseCommand removeTarget:self action:@selector(toggleButtonAction)];
これをファイルの include 領域に追加する必要があります。
@import MediaPlayer;
これは、バックグラウンドで再生するオーディオ アプリの場合にのみ、バックグラウンドで機能します (つまり、アプリの機能でそのバックグラウンド モードを設定する必要があります)。
ファースト レスポンダー ビューに配置されていることを確認する必要があります。配置されていない場合は、イベントがリモート イベントに到達するまで、レスポンダーのチェーンに沿って渡される必要があります。キーボードのキーを押すのと同じリモート コントロール イベントを想像してみてください。たとえば、アプリがボタンにフォーカスしているときにキーボードのキーを押しても、ボタンはキーの押下をリッスンしていないため、何も起こりません。同様の状況がコードで発生しています。BeginRecomingRemoteControlEvents とイベントを受信するためのメソッド オーバーライドを使用して、基本的な単一ビュー プロジェクトを作成してみてください (RemoteEventReceived() などの内容を思い出せません)。これは、リモート ボタンを押すと起動するはずです。
(申し訳ありませんが、サンプルコードを提供することはできません.Macの前ではありません)