diff --git a/lib/units/ios-provider/IOSObserver.ts b/lib/units/ios-provider/IOSObserver.ts index 7e769ba09..71e06c453 100644 --- a/lib/units/ios-provider/IOSObserver.ts +++ b/lib/units/ios-provider/IOSObserver.ts @@ -10,6 +10,7 @@ interface IOSSimEvents { } export default class IOSObserver extends EventEmitter { + private readonly APPLE_VENDOR_ID = 1452 private sims = new Set() private usbListenerStarted = false @@ -85,7 +86,12 @@ export default class IOSObserver extends EventEmitter { if (!this.usbListenerStarted) { const currentDevices = usb.listDevices() for (const device of currentDevices) { - if (!device.serialNumber || device.vendorId !== 1452) continue + if (!device.serialNumber + || device.interfaces.length + || device.vendorId !== this.APPLE_VENDOR_ID + ) { + continue + } this.emit('attached', this.formatUDID(device.serialNumber), false) } @@ -94,10 +100,16 @@ export default class IOSObserver extends EventEmitter { return } - if (event.eventType === 'Connected' && event.device?.vendorId === 1452) { - this.emit('attached', this.formatUDID(event.serialNumber), false) - } else { + if (event.eventType === 'Disconnected') { this.emit('detached', this.formatUDID(event.serialNumber), false) + return + } + + if (event.device + && !event.device.interfaces.length + && event.device.vendorId === this.APPLE_VENDOR_ID + ) { + this.emit('attached', this.formatUDID(event.serialNumber), false) } }) @@ -117,4 +129,3 @@ export default class IOSObserver extends EventEmitter { clearTimeout(this.listnerInterval) } } - diff --git a/package.json b/package.json index d436d76ef..4ed977558 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "tsx": "4.20.3", "underscore.string": "3.3.6", "url-join": "1.1.0", - "usb-hotplug": "^0.1.6", + "usb-hotplug": "^1.0.0", "utf-8-validate": "5.0.9", "uuid": "^11.0.3", "webpack": "^5.88.1",