1

サーバー呼び出しを行い、応答に基づいてサウンドを再生するコードがあります。現在、アプリケーションがバックグラウンドにある場合、またはデバイスがロックされている場合、これは機能しません。

アプリがバックグラウンドにある場合やデバイスがロックされている場合でも、このコード (サーバーの呼び出しと応答の処理) を実行する方法はありますか?

4

1 に答える 1

5

設計による一般的な解決策はありません。(Appleは、CPUと電力を大量に消費する可能性のあるプロセスをバックグラウンドで実行し、ユーザーエクスペリエンスを低下させることを望んでいません。)

利用可能な限定ケースのオプションがいくつかあります。

  1. あなたは音を出したいと言いました。これが「音楽の再生」またはそのようなストリーミングを意味する場合、アプリケーションが実行するために登録できるオーディオバックグラウンドタスクがあります。実際にオーディオをストリーミングしている必要があることに注意してください。Appleは、このアプローチを使用して一般的なケースの禁止を回避しようとするアプリを正当に嫌悪し、それに応じてAppStoreの提出を拒否します。
  2. シナリオを逆にして、サーバーにAppleプッシュ通知サービスを介してプッシュ通知を送信させることができます。ユーザーの設定に応じて、アラート、バッジ、またはサウンドが発生する可能性があります。オーディオをストリーミングしていない場合は、これが最適な場合があります。
  3. たとえば、アップロードまたはダウンロードを終了することを本当に意図している場合(サウンドは完了通知です)、アプリが名目上バックグラウンドになっている、またはデバイスがロックされた後、そのタスクを完了するための追加の時間を要求できます。-[UIApplication beginBackgroundTaskWithExpirationHandler:]適切なメソッド内から使用して、そのUIApplicationDelegateようなタスクを登録します。タスクを完了する時間は限られている(ただし、かなりの時間がある)ことに注意してください。このモードではメディアを再生できないと思います。
于 2012-07-03T00:40:59.940 に答える