检测USB是否已连接到iPhone设备

时间:2017-10-23 06:30:21

标签: ios usb iphone-privateapi

我想知道是否可以通过私有或公共框架以编程方式检测USB何时连接到iPhone设备。

我知道我们可以通过使用UIDeviceBatteryState来检测这一点,但在这种情况下它只能检测充电,拔出或不充电状态,并且无法识别是通过USB直接或通过任何电源连接充电其他设备,如mac或任何其他机器。

请告诉我。

1 个答案:

答案 0 :(得分:4)

你可以这样检测它。不需要私有API

static void _callback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
    if ([(__bridge NSString*)name isEqualToString:@"com.apple.mobile.lockdown.host_attached"])
    {
        NSLog(@"USB connected");
    }
    else if ([(__bridge NSString*)name isEqualToString:@"com.apple.mobile.lockdown.host_detached"])
    {
        NSLog(@"USB disconnected");
    }
}

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, _callback, CFSTR("com.apple.mobile.lockdown.host_attached"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, _callback, CFSTR("com.apple.mobile.lockdown.host_detached"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately);