Я создаю приложение, которое связывается между Mac и iPhone. Я использую Peertalk для этой цели.
Я только что скопировал файлы ядра Peertalk в мой проект и запустил, но соединение через сокет вернуло -1
// Connect socket
struct sockaddr_un addr;
addr.sun_family = AF_UNIX;
strcpy(addr.sun_path, "/var/run/usbmuxd");
socklen_t socklen = sizeof(addr);
if (connect(fd, (struct sockaddr*)&addr, socklen) == -1) {
if (error) *error = [[NSError alloc] initWithDomain:NSPOSIXErrorDomain code:errno userInfo:nil];
return NO;
}
Но когда я запускаю исходный код, соединение было успешным, и я получаю объект PTUsbHub
, и соединение возвращает значение success
.
Пример кода в объекте c
- (void)startListeningForDevices {
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserverForName:PTUSBDeviceDidAttachNotification object:PTUSBHub.sharedHub queue:nil usingBlock:^(NSNotification *note) {
NSNumber *deviceID = [note.userInfo objectForKey:@"DeviceID"];
//code to connect
}];
[nc addObserverForName:PTUSBDeviceDidDetachNotification object:PTUSBHub.sharedHub queue:nil usingBlock:^(NSNotification *note) {
NSNumber *deviceID = [note.userInfo objectForKey:@"DeviceID"];
//code to disconnect
}];
}
Мой быстрый код
@objc private func startListening(){
let nc = NotificationCenter.default
nc.addObserver(forName: NSNotification.Name.PTUSBDeviceDidAttach, object: PTUSBHub.shared(), queue: nil) { (notification) in
let deviceID = notification.userInfo?["DeviceID"] as? NSNumber
}
nc.addObserver(forName: NSNotification.Name.PTUSBDeviceDidDetach, object: PTUSBHub.shared(), queue: nil, using: { note in
let deviceID = note.userInfo?["DeviceID"] as? NSNumber
}
Таким образом, проблема в том, что я не получаю уведомление о присоединении или отсоединении, потому что соединение было неудачным.
Есть ли необходимость в разрешении? или вы можете кто-нибудь выяснить, в чем реальная проблема?
Заранее спасибо