2013-12-12 38 views
11

我正在開發藍牙LE設備,並且因爲MacOS的服務緩存而遇到麻煩。如果我嘗試在我正在開發的設備上刪除服務或更改其UUID,則更改不會顯示在Mac上,而是繼續從設備中看到舊的服務和UUID列表。我試着去找另一臺沒有與我的設備配對的Mac電腦,它看到了正確的UUID的新服務列表,所以它似乎是我Mac開發中的一個緩存問題。如何清除MacOS上的CoreBluetooth緩存?

我在/ Library/Preferences中找到了com.apple.Bluetooth.plist文件並將其刪除,但系統把它放回了相同的數據,我推測系統已將緩存加載到內存中,並且正在寫入它需要時退出。

有誰知道如何擦拭MacOS CoreBluetooth設備/服務緩存?

回答

31

我終於找到問題的根源 - 在名爲ByHost的文件夾中的用戶首選項文件夾中有一個緩存。以下是清除緩存藍牙的步驟:

  • 關閉藍牙
  • 從 刪除com.apple.Bluetooth.plist /庫/首選項
  • 刪除文件名爲 com.apple.Bluetooth.somehexuuidstuff從 〜/庫/首的.plist/ByHost(注意,這是用戶偏好 文件夾,而不是系統中的一個)
  • 開啓藍牙

這樣做後,我的外圍設備的服務被正確識別。從我在網上發現的情況來看,還可能有一些其他的com.apple.Bluetooth文件位於與HID或耳機有關的/ Library/Preferences中 - 我不知道刪除它們是否很重要,因爲我沒有讓他們在我的系統上。

+0

我在我的設備上遇到過很多這個問題。對於iOS(而不是OSX),我發現在iOS上,只需80-90%的時間就可以簡單地關閉BT並消除緩存問題。其他10-20%,我做一個設備重新啓動,它的工作原理。 – SJoshi

+0

對El Capitan 10.11.x的每次更新都要求我刪除「ByHost」plist文件以使藍牙再次工作,但我必須先重新啓動。 – doublesharp

+0

嘗試過Sierra,當我重新打開藍牙時,CoreBluetoothCache中的19950項目仍然在新創建的com.apple.Bluetooth.plist中 – Neth