UIButton Bluetooth Toggle - PullRequest
       7

UIButton Bluetooth Toggle

0 голосов
/ 06 июня 2019

Я настроил свое приложение на автоматическое подключение к Bluetooth при запуске приложения, но я хотел, чтобы кнопка принудительного переподключения использовалась в случае разрыва соединения.Моя кнопка использует тот же код, что и при начальном поиске и подключении, который используется в viewDidLoad ().

ДА Я знаю о функции автоматического переподключения, и она включена, но я так хочу.

@IBAction func BTButtonPushed(_ sender: Any) {
        bluejay.start() //Call Bluejay

        bluejay.scan( //Begin and format BLE scanning
            duration: 10, serviceIdentifiers: [self.serviceID],
            discovery: { [weak self] (discovery, discoveries) -> ScanAction in
                guard let weakSelf = self else {
                    return .stop
                }

                if (discovery.peripheralIdentifier.name == self!.deviceName) {
                    self!.pI = discovery.peripheralIdentifier
                    return .stop
                }

                weakSelf.discoveries = discoveries
                return .continue
            },
            stopped: { (discoveries, error) in

                //Once the correct device is found, connect\\
                self.bluejay.connect(self.pI) {
                    result in
                    switch result {
                    case .success:
                        self.isConnected = true
                        self.BTButtonView.setImage(UIImage(named: "Bluetooth-Logo-on"), for: UIControl.State.normal) //Set BT logo to connected

                    case .failure(let error):
                        debugPrint(error)
                        self.isConnected = false
                        self.BTButtonView.setImage(UIImage(named: "Bluetooth-Logo-off"), for: UIControl.State.normal) //Set BT logo to connected
                    }
                }
        })
    }

Кнопка отключит Bluetooth при нажатии, но не включит его, для этого я должен выйти из приложения и перезапустить.Честно говоря, я не знаю, почему он отключается от Bluetooth при нажатии, поскольку у меня нет кода, написанного для отключения.

1 Ответ

0 голосов
/ 06 июня 2019

Ну, я понял это и подумал, что опубликую, если кто-нибудь еще столкнется с этой проблемой.У меня не было команды на отключение модуля Bluetooth, что вызывало ошибки при переподключении.

С тех пор я добавил ветвь логики, чтобы определить, должна ли кнопка быть включена или выключена путем генерации значения Bool, запускаемого инициациейглобальная переменная BTButton в true.

    @IBAction func BTButtonPushed(_ sender: Any) {

    if (BTButton) {
        bluejay.disconnect(immediate: true)
        self.BTButtonView.setImage(UIImage(named: "Bluetooth-Logo-off"), for: UIControl.State.normal) //Set BT logo to connected
        BTButton = false
    }
    else {
        bluejay.start() //Call Bluejay

        bluejay.scan( //Begin and format BLE scanning
            duration: 10, serviceIdentifiers: [self.serviceID],
            discovery: { [weak self] (discovery, discoveries) -> ScanAction in
                guard let weakSelf = self else {
                    return .stop
                }

                if (discovery.peripheralIdentifier.name == self!.deviceName) {
                    self!.pI = discovery.peripheralIdentifier
                    return .stop
                }

                weakSelf.discoveries = discoveries //Add each discovery to discoveries
                return .continue
            },
            stopped: { (discoveries, error) in

                //Once the correct device is found, connect\\
                self.bluejay.connect(self.pI) {
                    result in
                    switch result {
                    case .success:
                        self.isConnected = true
                        self.BTButtonView.setImage(UIImage(named: "Bluetooth-Logo-on"), for: UIControl.State.normal) //Set BT logo to connected

                    case .failure(let error):
                        debugPrint(error)
                        self.isConnected = false
                        self.BTButtonView.setImage(UIImage(named: "Bluetooth-Logo-off"), for: UIControl.State.normal) //Set BT logo to connected
                    }
                }
        })
        BTButton = true
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...