私はCoreBluetooth
ラッパーとして機能するカスタムクラス(MyBLE
)を用意しました(これはLGBluetoothと似ています)。私はフォアグラウンドで正常に動作MyBLE
オブジェクト、としてそれを初期化し、AppDelegate
でバックグラウンドモードのBLE:didUpdateValueForCharacteristicが呼び出されていません
MyBLE.h
@interface MyBLE : NSObject
@property (nonatomic, strong) CBCentralManager *central;
@property (nonatomic, strong) CBPeripheral *peripheral;
+ (MyBLE *)sharedInstance;
//...
@end
:それは私のBLEアクセサリーやiOSデバイスとの間の通信を処理します。 Info.plistに必要なエントリを設定して、Core Bluetooth Programming Guideに従ってUIBackgroundMode
を使用するようにしました。このため、BLEアクセサリによってデータを送信し続けることができます。
ホームボタンを押したとき、Xcodeコンソールは、iOSがBLEペリフェラルからデータを受け取ったときに印刷する必要のあるメッセージを印刷しなくなりました。バックグラウンドモードに入る前に、デバイスはiOSデバイス(中央)に既に接続されています。
私は何かを見逃しましたか? 3分後にアプリがBLEデバイスからデータを取得しなくなったようです。 (はい、私はbluetooth-central
を追加しました)
ペリフェラルはデータを更新していて、 'notify'を送信していますか、ポーリングの読み取りを発行していますか?最初にアプリケーションを実行したときにバックグラウンドのBluetooth許可を求められましたか? – Paulw11
いいえ「バックグラウンドBluetooth許可」に気付かなかった。 (私はバックグラウンドのGPS追跡権限だけがそのようなものを持っていると思った。)この場合、周辺機器は中央(iOS)にデータを送信している。フォアグラウンドでは動作しましたが、バックグラウンドではコンソールログはありませんでした。正しく動作しているかどうかは確認できません。または、コンソールログがバックグラウンドでないのは普通ですか? (これは奇妙なことです)。 –