我想知道是否可以通过私有或公共框架以编程方式检测USB何时连接到iPhone设备。
我知道我们可以通过使用UIDeviceBatteryState来检测这一点,但在这种情况下它只能检测充电,拔出或不充电状态,并且无法识别是通过USB直接或通过任何电源连接充电其他设备,如mac或任何其他机器。
请告诉我。
答案 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);