【问题标题】:Detect if USB is connected to iPhone device检测 USB 是否连接到 iPhone 设备
【发布时间】:2017-10-23 06:30:21
【问题描述】:

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

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

请告诉我。

【问题讨论】:

  • 任何帮助将不胜感激

标签: ios usb iphone-privateapi


【解决方案1】:

您可以像这样检测它。无需私有 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);

【讨论】:

  • 此通知在 iOS 12 上不起作用。您找到替代方案了吗?
  • 我知道这是一个老问题,但你能检测到当前状态吗,如果我在连接时运行应用程序,它不会调用附加的通知吗?仅供参考 @AbilashBansal 它与我一起使用 iOS 版本 12.2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
  • 2017-03-16
  • 1970-01-01
  • 2013-11-10
相关资源
最近更新 更多