I am a new in Bluetooth connection and I want to add second device in my iOS project. I already have one device, and the new device is very similar with first one, but little bit deferent. I have one process for the two devices, and I did not change a lot of code, just created all value for the new device. My all devices have different name and identifier, first device is working fine. For creating UUID values, I used UUID generator.
let deviceTwoServiceUUID = “59DE3994-6A63-4654-8FF0-F85C5163B2F5”
let deviceTwoFirstCharacteristicUUID = “59DE3994-6A63-4654-8FF0-F85C5163B2F6”
let deviceTwoSecondCharacteristicUUID = “59DE3994-6A63-4654-8FF0-F85C5163B2F7”
let deviceOneServiceUUID = “A6AF4483-E210-457B-B9D6-B8A621513D1D”
let deviceOneFirstCharacteristicUUID = “A6AF4483-E210-457B-B9D6-B8A621513D2D”
let deviceOneSecondCharacteristicUUID = “A6AF4483-E210-457B-B9D6-B8A621513D2D”
}
class BleManager: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
@objc private(set) static var sharedInstance = BleManager()
var cbManager : CBCentralManager? = nil
var currentPeripheral : CBPeripheral? = nil
var secondService : CBService? = nil
var firstService : CBService? = nil
var secondFirstCharacteristic : CBCharacteristic!
var secondSecondCharacteristic : CBCharacteristic!
var firstFirstCharacteristic : CBCharacteristic!
var firstSecondCharacteristic : CBCharacteristic!
func initCentralManager() {
		if cbManager == nil {
				cbManager = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey : “MyApp”, CBCentralManagerOptionShowPowerAlertKey: true])						
		}
func deinitCentralManager() {
		cbManager = nil
}
func isBluetoothAvailable() -> Bool {
		return cbManager?.state == CBManagerState.poweredOn
}
func scan() {
		if (cbManager != nil && (cbManager?.isScanning)!) {
				return
		}
		
		discoveredPeripherals.removeAll()
		
		let serviceUUIDs = [CBUUID(string: BleConstants.deviceTwoServiceUUID), CBUUID(string: BleConstants.deviceOneServiceUUID)]
		
		cbManager?.scanForPeripherals(withServices: serviceUUIDs,
																	options: [CBCentralManagerScanOptionAllowDuplicatesKey : 1])
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
		if(!discoveredPeripherals.contains(peripheral)) {
				discoveredPeripherals.append(peripheral)
		}
}
func stopScan() {
		if cbManager != nil && (cbManager?.isScanning)! {
				cbManager?.stopScan()
		}
}
func connect(peripheral: CBPeripheral) {
		if cbManager?.state == CBManagerState.poweredOn {
				if currentPeripheral == nil || currentPeripheral?.state != CBPeripheralState.connected {
						cbManager?.connect(peripheral, options: nil)
				} else {
						cbManager?.cancelPeripheralConnection(peripheral)
				}
		}
}
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
Device.savePeripheralString(peripheral: peripheral.identifier.uuidString)
		AutoConnect.stop()
DeviceUpdate.updateProgress = .None
Device.isDongleConnected = true
currentPeripheral = peripheral
currentPeripheral?.delegate = self
currentPeripheral?.discoverServices(nil)
disableSleep()
}
func disableSleep() {
		UIApplication.shared.isIdleTimerDisabled = true
}
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
if error != nil {
				return
		}
		if let services = peripheral.services {
				for service in services {
						if service.uuid.uuidString == BleConstants.deviceTwoServiceUUID {
				Device.dongleType = port.second
										secondService = service
								peripheral.discoverCharacteristics(nil, for: service)
				}
						if service.uuid.uuidString == BleConstants.deviceOneServiceUUID {
				Device.dongleType = port.first
								firstService = service
								peripheral.discoverCharacteristics(nil, for: service)
						} else {
								Log.bt("didDiscoverServices for peripheral not found \(peripheral.identifier.uuidString)")
						}
				}
		}
}
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
		for characteristic in service.characteristics! {
				if characteristic.uuid.uuidString == BleConstants.deviceOneFirstCharacteristicUUID {
		 firstCharacteristic = characteristic
				}	
		else if characteristic.uuid.uuidString == BleConstants.deviceOneSecondCharacteristicUUID {
					 firstSecondCharacteristic = characteristic
				else if characteristic.uuid.uuidString == BleConstants.deviceTwoFirstCharacteristicUUID {
						secondFirstCharacteristic = characteristic
				} else if characteristic.uuid.uuidString == BleConstants.deviceTwoSecondCharacteristicUUID {
		secondSecondCharacteristic = characteristic
				} else {
						Log.bt("didDiscoverCharacteristics not found \(characteristic.uuid.uuidString)")
				}
		}
		
		if Device.dongleType == .deviceTwo {
				 openPortDeviceTwo()
		} else {
				openPortDeviceOne()
		}
}
Do you have idea, Did I create UUIDs correct?
P.S: Android app works fine with both devices.
Thanks a lot!