最近Swift 3からSwift 4、iOS 10.3.3からiOS 11.1にアップグレードされました。私はBLEを使って双方向に通信するアプリケーションを開発しています。次のようにワークフローは、次のとおりBLE周辺デリゲートが呼び出されていない
1)周辺 - CENTRAL)アイデンティティを受信する(プロセスそれ...)
3 - - アイデンティティ
2)CENTRAL宣伝周辺
4への対応)周辺 - Doneを中心
5)からの受信応答が
私のコードは、更新前に完璧に働いていたが、現在はそのではありません。
peripheral.writeValue(encryptedData!, for: characteristic, type: .withResponse)
これは、次のデリゲートメソッドを呼び出す必要がありますが、それはしません:
public func peripheral(_ peripheral: CBPeripheral, didWriteValueFor descriptor: CBDescriptor, error: Error?) {
print("Did Write")
print("Error=\(error?.localizedDescription)")
}
また、以下の(と呼んでいた)すべきステップ4の終わりに、私は次の行を実行します周辺デバイス上のデリゲートメソッドが、それはしません:次のように
public func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveWrite requests: [CBATTRequest]) {
print("did receive write request")
}
サービスと特性が設定されています
let prefs = Preferences()
let strServiceUUID = prefs.GetString(key: Preferences.PREF_IDENTITY_SERVICE_UUID, defaultVal: "")!
let strCharacteristicUUID = prefs.GetString(key: Preferences.PREF_IDENTITY_CHARACTERISTIC_UUID, defaultVal: "")!
print("ServiceUUID=\(strServiceUUID)")
print("CharacteristicUUID=\(strCharacteristicUUID)")
mServiceUUID = CBUUID(string: strServiceUUID)
mCharacterUUID = CBUUID(string: strCharacteristicUUID)
mCBBluetoothServices = CBMutableService(type: mServiceUUID, primary: true)
//lets configure the data we want to advertise for
var characteristics : [CBCharacteristic] = []
//let strData : String = "933911"
//let data = strData.data(using: .utf8)
let cbProperties: CBCharacteristicProperties = [.read, .write, .notify]
let cbPermissions: CBAttributePermissions = [.readable, .writeable]
mIdentityObjectCharacteristic = CBMutableCharacteristic(type: mCharacterUUID,
properties: cbProperties,
value: nil,
permissions: cbPermissions)
characteristics.append(mIdentityObjectCharacteristic)
mCBBluetoothServices.characteristics = characteristics
mCBPeripheralManager.add(mCBBluetoothServices)
私はそれを正しいデリゲートメソッドに変更しましたが、peripheral.writeValue(encryptedData !, for:characteristics、type:.withResponse)を呼び出すと、まだトラップしません。 – Paul
これは残念です。実際に接続されていること、すべての権限を持っていること、BLEが有効になっていることなどを確認していますか? iOSにアップグレードした後、特にiPhone 5などの古い電話機にアップグレードした後、BLE接続に関する問題が発生しました。コードをもう少し投稿すれば、私は比較し、サメの問題を見ているかどうかを見ることができます。 – sammedeta