1

私は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を追加しました)

+1

ペリフェラルはデータを更新していて、 'notify'を送信していますか、ポーリングの読み取りを発行していますか?最初にアプリケーションを実行したときにバックグラウンドのBluetooth許可を求められましたか? – Paulw11

+0

いいえ「バックグラウンドBluetooth許可」に気付かなかった。 (私はバックグラウンドのGPS追跡権限だけがそのようなものを持っていると思った。)この場合、周辺機器は中央(iOS)にデータを送信している。フォアグラウンドでは動作しましたが、バックグラウンドではコンソールログはありませんでした。正しく動作しているかどうかは確認できません。または、コンソールログがバックグラウンドでないのは普通ですか? (これは奇妙なことです)。 –

答えて

1

MyBLEオブジェクトの初期化を-init:から-application:didFinishLaunchingWithOptions:に移動した後、それは機能しました。

どういうわけか、その時点でデリゲートが初期化されたとは思われません。

関連する問題