2012-02-23 135 views
4

我有一个苹果兼容的蓝牙设备。获取蓝牙设备的MAC地址与苹果“外部附件框架”

现在,我试图在应用程序中获取该设备的MAC地址。是否可以通过Apples“External Accessory framework”获取蓝牙设备的MAC地址?

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

+0

为什么你需要获取配件的mac地址?我想你可以在没有它的情况下生存!也许我们可以用另一种方式解决你真正的问题。 – FormigaNinja 2015-07-03 02:14:13

回答

0

简短的回答是否定的,你不能这样做。

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

1

试试这个:

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

但我注意到这只工作丝毫最新的设备。 (新iPad 1的配件是不是键值编码兼容的关键“MACADDRESS”)

看看到整个附件字典多个键:

NSLog(@"%@", accessory); 
+0

我是新用户...我认为这是一个很好的答案;) – 2013-03-01 16:56:26

+0

downvoted ???有人下错了脚 – 2013-05-28 09:55:47

+0

很好的回答:) – JosephT 2014-09-17 10:10:55

4

不,你不能得到EAAccessory的Mac地址。我的意思是,你可以使用下面的命令:

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

但它没有记录,你可以看到EAAccessory documents。苹果可以拒绝你的应用程序,或者该功能可能会停止在下一次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:我知道,上面的信息,你不知道两个相同的设备之间的差异,但取决于你正在开发什么样的应用程序,无论如何,这并不重要。

希望它有帮助。