【问题标题】:Get the MAC address of a Bluetooth device with Apples "External Accessory framework"使用苹果“外部附件框架”获取蓝牙设备的 MAC 地址
【发布时间】:2012-03-14 07:54:00
【问题描述】:

我有一个与 Apple 兼容的蓝牙设备。

现在,我正在尝试在应用中获取该设备的 MAC 地址。是否可以借助苹果的“External Accessory framework”获取蓝牙设备的MAC地址?

听说不能以正常方式获取 MAC 地址,但我不了解“外部附件框架”是否足以决定是否可以使用此框架。

【问题讨论】:

  • 为什么要获取配件的mac地址?我想没有它你也能活下去!也许我们可以通过其他方式解决您真正的问题。

标签: iphone ios external-accessory


【解决方案1】:

不,您无法获取EAAccessory 的mac 地址。我的意思是,您可以使用以下命令:

NSString *macAddress = [accessory valueForKey:@"macAddress"];

但正如您在 EAAccessory documents 上看到的那样,它没有记录在案。 Apple 可能会拒绝您的应用,否则此功能可能会在下一次 iOS 更新等时停止工作。

如果您只是尝试在特定型号的设备上进行自定义操作,在大多数情况下,您可以使用可用信息之一:

<EAAccessory: 0x17445c180> {
  connected:YES
  connectionID:29354791
  name: 23HG YKL CXN
  manufacturer: MANUFACTURER NAME
  modelNumber: 878253-222
  serialNumber: //not always available
  firmwareRevision: 1.0.0
  hardwareRevision: 1.0.0
  protocols: (
    "com.some.protocol",
    "com.some.other.protocol"
  )
}

或混合使用,例如 (modelNumber + firmwareRevision) 等。

PS:我知道根据上面的信息,您不知道两个相同设备之间的区别,但取决于您正在开发的应用程序类型,无论如何都没关系。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    试试这个:

    NSString *macAddress = [accessory valueForKey: @"macAddress"];
    

    但我注意到这仅适用于最新设备。 (iPad 1 的配件与键“macAddress”的键值编码不兼容)

    查看整个附件字典以获取更多键:

    NSLog(@"%@", accessory);
    

    【讨论】:

    • Apple 是否批准使用这种方式的应用程序?
    【解决方案3】:

    简短的回答是不,你不能那样做。

    原因是外部附件框架所做的只是设置设备的输入和输出数据流。如果您想从硬件获取 MAC 地址,则硬件必须通过他们为其设备创建的任何通信机制以及相关的 iOS 软件来提供该信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 2020-10-27
      • 1970-01-01
      相关资源
      最近更新 更多