iOS13 Reading is not permitted.

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

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

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

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
        // 錯誤地方  在iOS13以前沒有影響, iOS13時候,系統(tǒng)報出了錯誤
        // 寫 UUID 
        if characteristic.uuid == characteristicWriteUUID {
               // 讀  (這里是不對?, 應(yīng)該寫到讀的uuid里面, 請看改正后的代碼)
              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: 錯誤信息
    func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
        
        
        if (error != nil) {
            self.delegate?.bleConnection(status: false)
            FIILPrintLog(message: "外圍設(shè)備尋找特征過程中發(fā)生錯誤,錯誤信息: \(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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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