2014-05-05 50 views
1

我想要做的是在我的Mac上從iPhone上使用Apple通知中心服務(ANCS)。爲了讓我的iPhone在我的iPhone的藍牙設置中顯示,我顯然需要使用服務請求。如何使用IOBluetooth/CoreBluetooth服務請求?

我到目前爲止所嘗試的是在我的Mac上啓動CBPeripheralManager,向其添加ANCS服務並開始投放廣告。這似乎沒有做到,因爲我的Mac沒有出現在我的iPhone的藍牙設置中。我也試過的是啓動一個CBCentralManager並開始掃描,使用CBCentralManagerScanOptionSolicitedServiceUUIDsKey鍵中的ANCS UUID,該鍵也不起作用。

有沒有人有關於如何做到這一點的想法?我花了好幾個小時觀看WWDC視頻並瀏覽了Apple的文檔,但除了一些模糊提及的「服務請求」外,我找不到它。

謝謝!

+0

我在這之前一週左右就玩過了,除非我運行一個廣告另一個(任何其他)BLE服務的應用程序,否則我無法讓iPhone宣傳ANCS UUID。這似乎並不適合我,但這是我發現的 - 希望別人可以提供一些答案/見解 – Paulw11

+0

我想KhaosT已經完全分享了您要查找的代碼https://github.com/KhaosT/ANCS- Mac還有很多其他的實現。 – allprog

+0

@ Paulw11除了在手機上進行應用廣告之外,沒有別的辦法。 iOS會自動請求ANCS,ANCS不能以其他方式訪問。你做得對。您可以使用任何應用程序,例如LightBlue廣告。廣告內容根本不重要。 – allprog

回答

4

當藍牙LE設備發佈廣告時,其廣告數據包中包含某些數據。這可能會溢出到所謂的擴展查詢響應(EIR)數據中,掃描設備可以請求該數據。

要使用服務招標,就必須包括密鑰爲0x15(標「的128位服務徵集的UUID列表,請參閱here)和ANCS UUID 7905F431-B5CE-4E99-A40F-4B1E122D00D0

我已經能夠得到這個工作在嵌入式平臺和iOS,但還沒有嘗試過在OSX但是,你應該能夠通過你上面提到的關鍵要求系統中添加廣告數據:

CBCentralManager *manager = [[CBCentralManager alloc] initWithDelegate:self 
                   queue:nil]; 
[manager scanForPeripheralsWithServices:nil 
           options:@{ 
    CBCentralManagerScanOptionSolicitedServiceUUIDsKey:@[ 
     [CBUUID UUIDWithString:@"7905F431-B5CE-4E99-A40F-4B1E122D00D0"]]}]; 

這通過包含字典密鑰與用於ANCS UUID的單個CBUUID對象的數組配對組成