我有一个与 Apple 兼容的蓝牙设备。
现在,我正在尝试在应用程序中获取该设备的 MAC 地址。是否可以借助苹果的“外部附件框架”获取蓝牙设备的 MAC 地址?
我听说无法以正常方式获取 MAC 地址,但我不了解“外部附件框架”是否足以决定是否可以使用此框架。
我有一个与 Apple 兼容的蓝牙设备。
现在,我正在尝试在应用程序中获取该设备的 MAC 地址。是否可以借助苹果的“外部附件框架”获取蓝牙设备的 MAC 地址?
我听说无法以正常方式获取 MAC 地址,但我不了解“外部附件框架”是否足以决定是否可以使用此框架。
不,您无法获取EAAccessory
的 mac 地址。我的意思是,您可以使用以下命令:
NSString *macAddress = [accessory valueForKey:@"macAddress"];
但它没有记录,正如您在EAAccessory 文档中看到的那样。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:我知道上面的信息,你不知道两个相同设备之间的区别,但取决于你正在开发什么样的应用程序,无论如何都没关系。
希望能帮助到你。
尝试这个:
NSString *macAddress = [accessory valueForKey: @"macAddress"];
但我注意到这只适用于最新设备。(iPad 1 的配件与键“macAddress”的键值编码不兼容)
查看整个附件字典以获取更多键:
NSLog(@"%@", accessory);
简短的回答是否定的,你不能那样做。
原因是外部附件框架所做的只是设置设备的输入和输出数据流。如果您想从硬件获取 MAC 地址,则硬件必须通过他们为设备创建的任何通信机制以及相关的 iOS 软件来提供该信息。