3

readRSSI関数を使用してRSSIを読み取るようにタイマーをスケジュールしましたが、アプリがバックグラウンドになるとタイマーが停止します。アプリがバックグラウンドになったときに周辺機器の通知からRSSI値を取得するための良い方法があるかもしれません。しかし、私はその方法がわかりません。誰か助けてもらえますか?誰かがより良い方法を持っていますか?

4

1 に答える 1

1

私は同じ問題を抱えています、そして私は2つの考えを持っています。

1.1。

まず、定期的にcorebluetoothデリゲートを取得するサービスが必要です。Fまたは私の例では、定期的に委任できるバッテリーサービスがありますdidUpdateValueForCharacteristic

次に、readRSSI関数をに設定しdidUpdateValueForCharacteristicます。また、Corebluetoothでバックグラウンドモードを設定することを忘れないでください。これで、バッテリー値を更新するときにRSSIを更新できます。

これは私にとっては問題なく機能しますが、いくつかのサンプルコードから別のアイデアを得ました。

2.2。

RSSIリーダーを起動するときはいつでも、以下のコードを使用してください。

NSTimer *rssiTimer; 
[rssiTimer invalidate];    
rssiTimer = [NSTimer timerWithTimeInterval:1.0 target:peripheral selector:@selector(readRSSI) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop]addTimer:rssiTimer forMode:NSRunLoopCommonModes];

それは私にとってもうまくいきます。

于 2013-03-28T03:59:43.507 に答える