私はいくつかの周辺特性を連続的に実行して追跡する必要があるアプリケーションを開発しています。CoreBluetooth "willRestoreState" - 正確に何をすべきか?
すべてフォアグラウンドで問題なく動作します。
これもバックグラウンドで動作しますが、正しく動作するかどうかはわかりません。
状態復旧とwillRestoreState
の実装に関する多くの投稿が赤くなっていますが、このメソッドの呼び出し時に何をすべきかを明示的に指示するものはありません。私が作ってるんだ
プロセスはこのように書きます:
私はここで私がの定期的な流れやってるから
myCentralManager =
[[CBCentralManager alloc] initWithDelegate:self queue:nil
options:@{ CBCentralManagerOptionRestoreIdentifierKey:
@"myCentralManagerIdentifier" }];
を使用して中央マネージャを作成しています:
ウェイティング中央管理者が電源をオンにする(centralManagerDidUpdateState) - >周辺機器をスキャンする - >接続する - >サービスをディスカバーする - >特性をディスカバーする - >特性を登録する - >データを読み込む
は、それから私は、私は数秒を待っている
kill(getpid(), SIGKILL);
を使用して私のアプリを強制終了した後、私の周辺から再び広告を開始します。
私はプロセスが生き生きとしているのを見ることができ、私のログはAppDelegateのdidFinishLaunchingWithOptions
が呼び出されていることを示しています。
私は、このような中央マネージャ復元:
NSArray *identifiers = launchOptions[UIApplicationLaunchOptionsBluetoothCentralsKey];
if (identifiers && identifiers.count > 0) {
_centralManager = [[CBCentralManager alloc] initWithDelegate:self
queue:nil
options:@{CBCentralManagerOptionRestoreIdentifierKey:[identifiers objectAtIndex:0]}];
}
を私はまたwillRestoreState
とcentralManagerDidUpdateState
が呼び出さなっていることがわかります。
ここで私は失われています。 次に何をすればよいですか?
上記と同じ方法で、しかし - - 。私は上記の通常の流れを(やり続けるんだ場合は、すべてが正常に動作するようです、私は正しいことをやっている
は、私が何かをするべきか? ?willRestoreState
ではそうならば、私は何をすべき事前に
感謝を