3

アプリケーションがバックグラウンドにあるときに、Bluetooth 経由で他の iOS デバイスを検出できるようにしたいと考えています。アプリケーションがフォアグラウンドにないときに、Bonjour または Game Kit を使用してこの検出を行うことはできますか?

これを実行して、互換性のあるデバイスが見つかった場合に通知を送信することは可能でしょうか?

また、オーディオの再生中にバックグラウンドで実行して、この検出を行うことはできますか?

4

1 に答える 1

4

これは、アプリケーションが中断されている間はできません。iOS アプリケーション プログラミング ガイドから:

中断される前に、Bonjour 関連のサービスをすべてキャンセルしてください。アプリケーションがバックグラウンドに移行するとき、アプリケーションが中断される前に、Bonjour から登録を解除し、ネットワーク サービスに関連付けられているリッスン ソケットを閉じる必要があります。いずれにせよ、中断されたアプリケーションは着信サービス要求に応答できません。これらのサービスを閉じると、実際には利用できないのに利用可能に見えなくなります。Bonjour サービスを自分で閉じない場合、アプリケーションが中断されると、システムはこれらのサービスを自動的に閉じます。

ネットワークベースのソケットで接続障害を処理する準備をしてください。アプリケーションが何らかの理由で中断されている間、システムはソケット接続を切断することがあります。ソケットベースのコードが、信号の喪失やネットワークの移行など、他の種類のネットワーク障害に備えている限り、異常な問題が発生することはありません。アプリケーションの再開時にソケットの使用中に障害が発生した場合は、接続を再確立するだけです。

ただし、アプリケーションがオーディオをストリーミングしている場合は、ネットワーク接続を維持する必要があるため、オーディオを継続的に再生しているアプリケーションのバックグラウンドで Bonjour 検出を実行できる必要があります。バックグラウンドに留まることができるように、無音のオーディオ クリップをループで再生して、これを悪用しないようにしてください。そうしないと、アプリケーションが拒否されます。

于 2010-11-17T15:43:07.167 に答える