ここに私のシナリオです:Swift 3:バックグラウンドで周辺機器をスキャンするにはどうすればよいですか?
私は2つの周辺機器で接続し、私のアプリをバックグラウンドモードにして、自分のアプリとの接続が失われるまで周辺機器から離れ始めます。戻ってきたとき、彼らは手が届くと再び接続しません。
アプリがフォアグラウンドで実行されているときに同じテストを実行すると、問題は発生しません。つまり、iPhoneに近いペリフェラルを使用すると、再接続が行われます。
しかし、周辺機器の接続が失われているときは、DidDisconnectPeripheral
メソッドが呼び出されています。問題は、私はthis答えを読んで、まったく同じ方法が、残念ながらそれは動作しませんすべてをしたそのスキャンは、この方法
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
numberOfTagsSending = numberOfTagsSending - 1
numberOfConnectedTags = numberOfConnectedTags - 1
print("Tag was disconnected. Start scanning.")
synchronizer.alreadySynced = false
central.scanForPeripherals(withServices: arrayOfServices, options: [CBCentralManagerScanOptionAllowDuplicatesKey : true])
}
内部で呼び出されていないです。事前
この関数を 'Application:didEnterBackground'で呼び出してみましたか? – KSigWyatt
さて、正直言って私はしませんでした。しかし、AppDelegateから明示的に呼び出す必要がある情報は一度も見つかりませんでした。 – DCDC
バックグラウンドで動作するかどうかを確認してください。そうでなければ、 'central.scanForPeripherals()'メソッドが何らかの問題でなければなりません。あなたがあなたの質問に示した通りに正しく – KSigWyatt