2012-02-23 136 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:我知道,上面的信息,你不知道兩個相同的設備之間的差異,但取決於你正在開發什麼樣的應用程序,無論如何,這並不重要。

希望它有幫助。