iOS13 Reading is not permitted.

// 數(shù)據(jù)接收
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
     if let error = error {
            // error返回錯(cuò)誤 : Reading is not permitted.
            FIILPrintLog(message: "更新特征值時(shí)發(fā)生錯(cuò)誤,錯(cuò)誤信息--\(error.localizedDescription)")
            return
      }
}

iOS13上, 連接BLE藍(lán)牙時(shí)候, 返回錯(cuò)誤:Reading is not permitted.

查找問題后,發(fā)現(xiàn)在"搜索到特征回調(diào)"方法中,寫了錯(cuò)誤的方法導(dǎo)致的,返回的特征是寫和通知特征, 在這個(gè)特征中,我寫上了讀的方法, 在iOS13以前沒有影響, iOS13時(shí)候,系統(tǒng)報(bào)出了錯(cuò)誤

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
        // 錯(cuò)誤地方  在iOS13以前沒有影響, iOS13時(shí)候,系統(tǒng)報(bào)出了錯(cuò)誤
        // 寫 UUID 
        if characteristic.uuid == characteristicWriteUUID {
               // 讀  (這里是不對(duì)?, 應(yīng)該寫到讀的uuid里面, 請(qǐng)看改正后的代碼)
              peripheral.readValue(for: characteristic)
              if let value = characteristic.value {
              FIILPrintLog(message: "讀到peripheral.readValue數(shù)據(jù)----\(NSData.init(data: value))")
                        }
         }
}

改正后的代碼

    /// 搜索到特征回調(diào)
    ///
    /// - Parameters:
    ///   - peripheral: 外圍設(shè)備
    ///   - service: 服務(wù)
    ///   - error: 錯(cuò)誤信息
    func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
        
        
        if (error != nil) {
            self.delegate?.bleConnection(status: false)
            FIILPrintLog(message: "外圍設(shè)備尋找特征過程中發(fā)生錯(cuò)誤,錯(cuò)誤信息: \(error!.localizedDescription)")
        }
        //        FIILPrintLog(message: "搜索特征")
        
        if self.bleHeaderType == .F020 {
            let serviceUUID = CBUUID.init(string: self.kServiceUUID)
            
            let characteristicWriteUUID = CBUUID.init(string: self.kCharacteristicsWriteUUID)
            let characteristicNotiUUID = CBUUID.init(string: self.kCharacteristicsNotiUUID)
            let characteristicReadUUID = CBUUID.init(string: self.kCharacteristicsReadUUID)
            
            if service.uuid == serviceUUID {
                for characteristic in service.characteristics! {
                    // 寫
                    if characteristic.uuid == characteristicWriteUUID {
                        self.write = characteristic
                        // 藍(lán)牙連接代理協(xié)議
                        self.delegate?.bleConnection(status: true)
                    // 通知
                    }else if characteristic.uuid == characteristicNotiUUID {
                        peripheral.setNotifyValue(true, for: characteristic)
                    // 讀
                    }else if characteristic.uuid == characteristicReadUUID {
                        self.readOrWrite = characteristic
                        peripheral.readValue(for: characteristic)
                        if let value = characteristic.value {
                            FIILPrintLog(message: "讀到peripheral.readValue數(shù)據(jù)----\(NSData.init(data: value))")
                        }
                    }
                }
            }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容