私はiPhone-4sのアプリにコアBluetoothフレームワークを使用しています。
これは通常、できるだけ長く実行できるバックグラウンドアプリである必要があります。
現在、実行時間は40分から最大1時間です。
少なくとも1日くらいは期待しています。
この「bluetooth-central」の値は、.plistファイルの「Requiredbackgroundmodes」キーに追加されます。
最後に、私のアプリは「一時停止」モードになるようです。アプリを再度開くと(バックグラウンドからフォアグラウンド状態)、通知が再度送信されるため、Bluetooth接続が接続されたままで、BLEデバイスが通知を送信していることを意味します。ホームボタンを押してアプリがバックグラウンドになった場合、再度通知が届きません。
私のアプリが最大1時間だけバックグラウンドモードで動作する理由を誰かに教えてもらえますか?それは永遠のようにバックグラウンドで通常の音楽アプリのように実行し続ける必要があります。
Appleは、バックグラウンドアプリ(5つのカテゴリに分類される継続的に実行されているバックグラウンドアプリの1つ)がどの条件で失敗し、サスペンドモードになるかについて具体的なことを言っていますか?
iPhoneAppProgrammingGuide
「」セクションの「」を参照するCommunicating with a Bluetooth Accessory
と、Bluetooth LEアプリケーションの長時間実行されるバックグラウンドタスクには、2つの実装が必要であることがわかります。
1)UIBackgroundModesキーは、Info.plist
ファイル内で「bluetooth-central」である必要があります。2)Bluetoothデータのバックグラウンド処理をサポートするアプリは、セッションベースである必要があります。
そのため、私のアプリでは、最初の実装が組み込まれ、そのアプリケーションをバックグラウンドで実行して、すべてのタスクを最大1時間実行できます。
次に、2番目の実装を実装する必要があります。つまり、セッションベースです。ドキュメントによると、アプリが「一時停止」状態であっても、イベントを取得できます。EASession
クラシックBluetooth(外部アクセサリフレームワーク)に存在する ""のようなBluetoothLE(コアBluetoothフレームワーク)に固有の適切なセッションを作成しようとしました。しかし、私はそれを見つけられませんでした。
基本的に、BLEの目的でどのセッションクラスを使用する必要があるかわかりません。オーディオ/ビデオ、ネットワーキング、インターネット、外部アクセサリについては、個別のセッションクラスを利用できます。コアBluetoothフレームワークにはありません。
BLEに適したセッションクラスを教えてください。