如何在Apple多设备间同步数据?
我正在开发一款离线app,而且该app会在多设备傻上使用,比如apple watch,iphone,ipad,mac等等。
如何在这些设备上同步数据,可能是一个字符串或者json data。
当用户在一个设备上修改数据时,其他的被绑定的附近的设备会收到最新的被修改的数据,可能这些设备处在同一个wifi网络。
这个同步过程不需要被用户操作和感知的。
如果您有好的建议,我非常感谢!
Apple Watch
我正在开发一款离线app,而且该app会在多设备傻上使用,比如apple watch,iphone,ipad,mac等等。
如何在这些设备上同步数据,可能是一个字符串或者json data。
当用户在一个设备上修改数据时,其他的被绑定的附近的设备会收到最新的被修改的数据,可能这些设备处在同一个wifi网络。
这个同步过程不需要被用户操作和感知的。
如果您有好的建议,我非常感谢!
Apple Watch
姑且認為你所謂的離線就是去中心化, 那麼你的要求是無法實現的(或者實現方法會導致無法上架)
在這種沒有中心服務器, 但處在同一子網的情況下, 最常規的實現方式是監聽端口+廣播, 一旦某台設備更新數據後全網廣播信息, 其他設備接收後更新自身數據.
但是, 你所要實現的設備中, Mac沒有問題, iPhone/iPad 不確定是否允許, Apple Watch 幾乎沒可能允許, 那麼這種實現方式會導致無法上架.
看了一下, 理論上可行, 但是只限於配對的設備.
那麼剩下的問題就是其他設備間通信的問題了.
另外, 複雜網絡環境下, 子網間通信不能默認認為是暢通的.
你可以研究一下基於 Bonjour 協議能否實現,
或者如果可以以 mac 為 master/server 的話, 基於/設計任何局域網內中心化協議實現.
developer CountryHarry 你好:
我个人认为,如果你的app处于离线的状况下,不太可能在非用户感知操作的情况下做到同步数据,我的idea是可以让两部设备通过蓝牙进行p2p的对话,两部设备在app运行的时候,如果哪部设备更新的数据就会向另外一部设备通过蓝牙发送信息,另一部设备在会话中发现新的数据,对本地数据进行更新。
感谢,你的回答让我特地搜索了下watchos相关的内容,然后发现了这个,Apple Developer Documentation
Watch Connectivity
Implement two-way communication between an iOS app and its paired watchOS app.
文档上标记了iOS 9.0+ iPadOS 9.0+ Mac Catalyst 13.0+ watchOS 2.0+
兴许能用。🤔
你的idea非常好,启动app时和成功修改数据后,即时调用蓝牙传输数据。这个应该会解决我的问题。不知道apple自身已经有一些技术/接口调用可以解决这个问题,如果没有更好的答案,我会尝试下这个做法,如果能很好的实现,我再来告诉你。感谢!
iOS/iPadOS/watchOS 的藍牙設備不支持數據傳輸協議, 進行數據傳輸會導致無法上架
哦,好的,谢谢,我也是刚开始转向apple开发,不清楚还有专门的开发者社区。
使用iCloud传输数据的话,另一台设备不会即时接收到被修改的数据。我想要实现的场景是接近实时的数据同步。
感谢你的建议。
是的,从离线程度上来讲,设备间进行通信可以不算完全离线。
我想实现的场景主要是基于对用户隐私的保护,以及你说的去中心化,不存在一台中心服务器来存储用户的任何数据,这样我也就不需要额外支出服务器的成本。
如果这个场景能实现,用户不需要访问公网,不需要上传数据到公网服务器,用户所有的数据都在他的多台配对设备上。
Bonjour协议也是个很好的建议,我可能会在后续做一些尝试。
既然去中心化,就不再考虑mac的master/server了,而且存在一种情况,用户没有mac设备,仅需要在iphone和apple watch之间通信,那mac server就没有意义了。
你的回答给了我很多启发,等后续app实现并上架了,我再来给您回复。再次非常感谢!
現在的問題主要就在於, 你的離線到底要離線到什麼程度.
如何在Apple多设备间同步数据?