別のデバイスで実行される2つのプログラムをCoreBluetooth搭載のBluetooth経由でお互いに通信させようとしています。私はマネージャから周辺機器を見つけて接続することができ、接続された周辺機器でサービスをブラウズすることができますが、特性を試してみると、エラーThe specified UUID is not allowed for this operation.
が発生し、サービスの特性はゼロになります。UUID peripherial didDiscoverCharacteristicsforサービスでは使用できません
これはどういう意味ですか?私はターゲットのUUIDを指定して特性を見つけようとしましたが、どちらもこのエラーを示していません。
これは、エラーを出力する機能です。
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
print(error.localizedDescription)//prints "The specified UUID is not allowed for this operation."
if service.characteristics != nil {
for characteristic in service.characteristics! {
if characteristic.uuid == CBUUID(string: "A4389A32-90D2-402F-A3DF-47996E123DC1") {
print("characteristic found")
peripheral.readValue(for: characteristic)
}
}
}
}
これは私が周辺機器を探す場所です。
これは、他のデバイスにサービス特性を追加する方法です。
service = CBMutableService(type: CBUUID(string:"dc495108-adce-4915-942d-bfc19cea923f"), primary: true)
characteristic = CBMutableCharacteristic(type: CBUUID(string: "A4389A32-90D2-402F-A3DF-47996E123DC1"), properties: .write, value: nil, permissions: .writeable)
service.characteristics = [characteristic]
Iは、(.readable/.readを含む)の特性と権限の異なる組み合わせの数を試みたと私は同じエラーを取得します。
あなたは書き込み専用のため、あなたがしようとしたときにエラーが出るように設定している特性を読み取ろうとしていますそれを読んでください。 – Paulw11
意味がありますが、読み書き可能にするにはどうすればよいですか?また、プロパティを.read、およびpermissionsに変更し、.readableに変更しても何も変更されません。 – C1FR1