私はこれを iOS 9 でしかテストしていないので、誰かがこの 1 つの古い OS デバイスをテストできるかもしれません。
CBCentralManager
デリゲートを設定する代わりに、viewDidLoad
必要な瞬間までこれを残します。以下の例では、WKWebView
読み込みが完了したらこれを呼び出します。Web ビューの各ページで使用が必要になる可能性があるためです。 Bluetoothの に入れましたWKWebView didFinishNavigation
。
迅速
var managerBLE: CBCentralManager?
func bluetoothStatus() {
managerBLE = CBCentralManager(delegate: self, queue: nil, options: nil)
}
func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
bluetoothStatus()
}
func centralManagerDidUpdateState(central: CBCentralManager) {
switch managerBLE!.state
{
case CBCentralManagerState.PoweredOff:
print("Powered Off")
case CBCentralManagerState.PoweredOn:
print("Powered On")
case CBCentralManagerState.Unsupported:
print("Unsupported")
case CBCentralManagerState.Resetting:
print("Resetting")
fallthrough
case CBCentralManagerState.Unauthorized:
print("Unauthorized")
case CBCentralManagerState.Unknown:
print("Unknown")
default:
break;
}
}
デリゲートが設定された瞬間にbluetoothStatus()
、状態が変化します。
Bluetooth のみをオンにする通知は、アプリの初期ロード時にのみ呼び出されるようです。このようにすると、centralManagerDidUpdateState