同時觸發一個事件,我想在準確的同時在多個iOS設備觸發事件(例如播放音樂)(以毫秒爲單位的方式)在多個iOS設備
我的做法是保持一個套接字連接並向iOS設備發送時間戳(從當前時間晚10秒鐘),並在該時間戳的iOS設備上觸發事件。
問題是iOS設備可能會有所不同1或2秒,並會導致一個去同步。甚至時間戳也指出每個設備上的同一時間(AFAIK),它們不是毫秒級的敏感度。
有什麼辦法在多個設備上同時觸發一個事件,或者所應遵循的方法?
同時觸發一個事件,我想在準確的同時在多個iOS設備觸發事件(例如播放音樂)(以毫秒爲單位的方式)在多個iOS設備
我的做法是保持一個套接字連接並向iOS設備發送時間戳(從當前時間晚10秒鐘),並在該時間戳的iOS設備上觸發事件。
問題是iOS設備可能會有所不同1或2秒,並會導致一個去同步。甚至時間戳也指出每個設備上的同一時間(AFAIK),它們不是毫秒級的敏感度。
有什麼辦法在多個設備上同時觸發一個事件,或者所應遵循的方法?
不要通過Internet發送的數據。您不能假定連接延遲會足夠低以滿足您的需求。改用藍牙。您可以使用GameKit,使用dns-sd或使用類似HHServices的庫。
接將充當控制器的裝置。 Apple提供示例代碼來與GameKit一起完成此操作,但想到自己的方法並不難。當您想要觸發該操作時,該控制器將通過藍牙向其他設備發送數據包。
我懷疑你需要的延時比這還要低,但是如果你這樣做,讓控制器發送數據包到每個連接的設備,以確定每個連接的延遲,讓他們發送他們的時間戳到控制器,然後控制器應該能夠爲他們每個人計算同時發生的時間戳。
我試過gamekit(通過藍牙)。有一個30.8ms(考慮到iOS設置時間會自動爲每個設備設置完全相同的時間)我嘗試了幾種方式來記錄和播放音頻以創建完整的同步。我計算了設備之間的延遲標準差,並讓主機在該延遲之後採取行動,將數據發送到其他設備。然而,我可以聽到設備之間的差異:或許我應該嘗試找到一種更強大的方法來檢測藍牙延遲 – Bartu 2013-05-12 01:00:45
這些設備是如何相互連接的?在互聯網上?本地網絡?這是什麼類型的應用程序? – Jim 2013-05-10 19:59:28
通過互聯網,它會捕捉聲音,持續10秒每個設備上和處理捕獲的數據 – Bartu 2013-05-10 20:00:29
所以這些設備不能靠近彼此?在那種情況下,爲什麼它需要毫秒精度?裝有設備的人不會知道這種或那種方式。也許有更好的方法來實現你的目標。你想做什麼? – Jim 2013-05-10 20:17:16