如何在BLE中實施通知?在BLE中實施通知
我有一部智能手機,每小時它都會發送通知給所有附近的BLE設備(智能手錶,RFduino等)進行時間同步。
其他設備現在是服務器(因爲它提供數據),智能手機是收集數據的客戶端。
我可以搭載廣告套餐嗎?例如,智能手機總是廣播一個廣告數據包來通知它的存在(這是其他設備可以找到它的方式)。我可以修改該數據包以進行時間同步嗎?
如何在BLE中實施通知?在BLE中實施通知
我有一部智能手機,每小時它都會發送通知給所有附近的BLE設備(智能手錶,RFduino等)進行時間同步。
其他設備現在是服務器(因爲它提供數據),智能手機是收集數據的客戶端。
我可以搭載廣告套餐嗎?例如,智能手機總是廣播一個廣告數據包來通知它的存在(這是其他設備可以找到它的方式)。我可以修改該數據包以進行時間同步嗎?
爲了發送通知或廣告,您的智能手機必須充當服務器,這也意味着爲了能夠接收通知或掃描廣告,您的外圍設備必須充當客戶端。
這可能有點棘手,因爲如果兩個設備充當客戶端和服務器,它們可能不會同時履行其他角色。您需要隨時切換角色,這對於各種問題都是一個開放的領域。
此外,我不相信這是讓智能手機定期通知附近所有設備的最佳選擇。每個想要接收通知的設備都必須連接到設備才能接收通知,並且在發送通知以確保獲得正確時間時,此連接必須已處於活動狀態。因此,所有這些設備都需要事先連接到預期的通知時間,並在通知到來之前保持連接。
只是宣傳當前時間可能會更好,但請記住,在廣告時您無法將其作爲服務器連接到智能手機,因爲鏈接層可能不會同時處於掃描和廣告模式,並且在出於類似原因進行廣告時也可能無法連接。
如果您想這樣做,您可以將時間信息包含在廣告數據中。有關廣告數據結構的更多信息,請參閱藍牙核心規範v6第A部分的補充內容。你可以把它放在製造商的具體數據中。
但是,另一種選擇是使用寫入請求將時間直接寫入設備。您可以定義自己的服務和特徵。您可以在服務器的廣告數據中包含「時間同步所需」信息,當智能手機評估廣告時,它可以連接到相應的設備並直接發送時間。
此過程的優點是,只有在設備上確實需要時才更新時間,並且您不必切換客戶端/服務器角色,因爲服務器角色中的設備可能會正常發佈廣告,而且智能手機始終能夠保持客戶的角色。