使用苹果的“外部配件框架”获取蓝牙设备的MAC地址

4

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

现在,我正在尝试在应用程序中获取该设备的MAC地址。使用苹果的“外部配件框架”是否可以获取蓝牙设备的MAC地址?

我听说通常无法以正常方式获取MAC地址,但是我不够了解“外部配件框架”,无法确定是否可以使用此框架。


为什么需要获取配件的MAC地址?我认为你可以没有它而生存!也许我们可以用另一种方式解决你的真正问题。 - FormigaNinja
3个回答

5
不,你无法获取EAAccessory的MAC地址。我的意思是,你可以使用以下命令:
NSString *macAddress = [accessory valueForKey:@"macAddress"];

但是正如您在EAAccessory文件中所看到的,它并没有被记录下来。苹果可能会拒绝您的应用程序,或者这个功能可能会在下一个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"
  )
}

或者混合使用例如(型号编号+固件版本)等等。
PS:我知道根据上面的信息,你无法区分两个相同的设备,但是根据你正在开发的应用程序类型,这并不重要。
希望能对你有所帮助。

1

试试这个:

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

但我注意到这仅适用于最新的设备。(iPad 1的附件不符合键“macAddress”的键值编码规范)
查看整个附件字典以获取更多键:
NSLog(@"%@", accessory);

苹果会批准使用这种方式的应用吗? - anoop4real

0

简短的回答是不行。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接