14

私が望むのは、アプリが実行されていないときでも、iOS デバイスが Bluetooth LE サービスを常にアドバタイズしていることです。これにより、別の iOS デバイスがそれをスキャンして見つけることができます。私はここでAppleのバックグラウンド指示に従いました:

https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/PerformingCommonPeripheralRoleTasks/PerformingCommonPeripheralRoleTasks.html#//apple_ref/doc/uid/TP40013257-CH4-SW1 .

フォアグラウンドで広告を表示することも、バックグラウンドで広告を表示することもできますが、常に広告を表示し続けるわけではありません。バックグラウンドで実行するように設定している場合、再起動後にバックグラウンドの位置情報サービスが自動的に機能するように、デバイスの再起動後も広告を開始するべきではありませんか? Apple のドキュメントに記載されていない (または見つけにくい) バックグラウンド処理に対する制限はありますか? Core Bluetooth Peripheral がバックグラウンドで正しくアドバタイジングしている例はありますか?

ありがとう...

4

2 に答える 2

9

bluetooth-peripheralアプリの plist にバックグラウンド モードを追加すると、バックグラウンド広告が可能になります。これを行うと、アプリはバックグラウンドであってもコールバックを受信し続けます。

Appleは消費電力を削減するためにいくつかの最適化を実装しており、アプリがバックグラウンドになるとすぐに広告の品質が低下するため、広告は扱いにくい獣です. つまり、料金は大幅に引き下げられ、宣伝されているサービスは含まれておらず、地元の名前も含まれていません。アプリがフォアグラウンドに戻ると、これらの制限は無効になります。

一般に、この種のバックグラウンド操作では、アプリが実行されている必要があります。iOS 7 では復元プロセスが実装されており、アプリが終了している間は OS がアプリの代わりに動作し、送信またはその他の操作が差し迫ったときにアプリを復元できます。CBPeripheralManagerこれには、復元キーを/の初期化オプションに追加する必要がありますCBCentralManager。アプリケーションを 1 回起動する必要がありますが、その後は iOS がセントラル/ペリフェラルに対する BLE ファサードとして機能し続けます。

更新: Apple bluetooth-dev リストでもこの質問でループを実行したところ、コア Bluetooth マネージャーが再起動後に復元できないと宣言されていることがわかりました。これはどのドキュメントにも記載されていませんが、おそらく WWDC ビデオで言及されていました。Apple の認識を高めるために、バグを報告して再現する必要があります。

于 2013-10-08T12:37:52.220 に答える