18

私のアプリは、AVAudioPlayer を使用してバックグラウンド オーディオを再生し、iOS からリモート コントロール イベントを受信します。オーディオの再生中はすべて正常に動作しますが、オーディオが一時停止し、アプリがバックグラウンドに移動すると、何かおかしなことが起こります。Bluetooth デバイスを使用して 10 分後にオーディオを再開/一時停止すると、iOS は次のメッセージでアプリを終了します。

<MyApp>[633] has active assertions beyond permitted time:
{(
     <SBProcessAssertion: 0x25f520> identifier: com.apple.mediaremote.sendremotecommand process: <MyApp>[633] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:58
)}

これには非常に奇妙なことが 2 つあります。

  1. iOS は 10 分を過ぎてもアプリをシャットダウンしません。Bluetooth経由でリモートコントロールコマンドを受信した後にのみ実行されます。

  2. iOS のリモコン ボタンまたはヘッドフォンのリモコンを使用すると、アプリは問題なくオーディオの再生を再開します。

Bluetooth リモート コントロール メッセージによって iOS がアプリを終了させる理由がわかりません。Pandora アプリでは同様の問題が発生していないようです。

誰もこれについて手がかりを持っていますか?

更新: さらなるテストにより、バグのより明確な説明が明らかになりました。オーディオが 10 分以上一時停止され、アプリケーションでメモリ不足の警告が発生した後、バックグラウンド オーディオを再開しようとすると、このアプリケーションの強制的な iOS クラッシュが発生するようです。

バグを再現するには、次の手順が必要です。

  1. アプリケーションのオーディオを一時停止してからバックグラウンドに送信する (ホーム ボタンを押すか、別のアプリに切り替える) か、アプリケーションがバックグラウンドにある間にアプリケーションのオーディオを一時停止します。
  2. アプリケーションでメモリ不足の警告が発生するようにする (シミュレートまたは実際の)
  3. 10 分後、Bluetooth デバイスやスピーカー ドックなどのデバイスからトリガーされたリモート コントロール イベントを使用してオーディオの再生を試みます。

注: iOS は、最後のリモート コントロール イベントが Bluetooth デバイス、スピーカー ドック、またはカー アダプターなどの外部デバイスから開始された場合にのみ、アプリケーションを強制的にクラッシュさせるようです。iOS の組み込みの「リモート コントロール」インターフェイスまたはヘッドフォンのリモート コントロールを使用しても、クラッシュは発生しないようです。

ジョージがコメントで述べたように、私は自分のアプリ、パンドラ、および少なくとも 1 つの他のオーディオ再生アプリでこれを再現できました。Appleにバグレポートを提出しました。

4

0 に答える 0