16

CoreBluetooth (iBeacon なし) で BLE を使用する場合、デバイスが Bluetooth 信号を受信したときに実行されていないアプリを起動する方法はありますか?

RedBearlab の BLE Shield ( http://redbearlab.com/bleshield/ ) でビーコンをシミュレートしています。

ありがとう、ダン

* 2014 年 3 月 5 日更新 *

Apple は iOS 7.1 でメジャー アップデートを導入したようです。アプリに一致する UUID を検出すると、iOS がアプリを開きます。アプリはインストールするだけで、実行している必要はありません (ウェイクアップ コールに応答するために AppDelegate のロジックが必要です)。

4

4 に答える 4

10

アプリがバックグラウンドで実行されていて、他のアプリからのメモリ不足のために閉じられた場合 (ここで終了したことを意味します。ホーム ボタンをダブルクリックすると、バックグラウンド アプリのリストに表示されなくなります)、iOS はデリゲートが呼び出されたときに再度起動するように注意してください (.plist にリストされているバックグラウンド モードがあると仮定します)。

アプリがバックグラウンドで実行されていて、ユーザーによって閉じられた場合 (ここで終了したことを意味します。したがって、ユーザーはダブルクリックしてバックグラウンドで実行されているアプリのリストを取得し、バックグラウンド リストでアプリが小刻みに揺れるまでクリックし、次に、アプリの横にある「x」を押してアプリを強制終了します)、これは、ユーザーがアプリをバックグラウンドで実行することを望んでおらず、アプリが再起動されないことを明確に示しています。デリゲートがバックグラウンドで再び機能し始めるようにするには、ユーザーはアプリを再起動する必要があります (iOS7 の新機能)。

更新: これがドキュメントに記載されているかどうかはわかりませんが、CoreBluetooth WWDC 2013 ビデオに記載されています。見ることをお勧めします。ビデオのかなりの部分を、CoreBluetooth がバックグラウンドでどのように動作するかについて説明しました。

于 2013-11-14T02:16:30.540 に答える
4

私の理解では、アプリが以前に BLE ペリフェラルに接続したことがない場合は、いいえ。

アプリが以前に BLE ペリフェラルに接続したことがある場合は、次を使用します。

-connectPeripheral:オプション

接続要求はタイムアウトしません。このメソッドを呼び出す最適な場所は、アプリが BLE 周辺機器との接続を失ったときです。CBCentralManagerDelegate プロトコルで周辺機器への接続が失われると、通知を受け取ります。

-centralManager: didDisconnectPeripheral: エラー

次にアプリが BLE ペリフェラルの範囲内に入ると、このメソッドがトリガーされます。また、CBCentralManager を初期化するときに、状態の保存と復元を設定する必要があることに注意してください。

于 2013-11-13T17:08:37.063 に答える
1

https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html

CBCentralManagerDelegate または CBPeripheralDelegate デリゲート メソッドのいずれかが呼び出されると、システムはアプリをウェイクアップし、接続が確立または切断されたとき、周辺機器が更新された特性値を送信したとき、および中央マネージャーの状態が変化します。

バックグラウンドで特定のペリフェラル ロール タスクを実行するには、アプリの Info.plist ファイルに UIBackgroundModes キーと bluetooth-peripheral 値を含める必要があります。このキーと値のペアがアプリの Info.plist ファイルに含まれている場合、システムはアプリを起動して、読み取り、書き込み、およびサブスクリプション イベントを処理します。

于 2013-11-12T14:42:26.347 に答える