2010-08-29 186 views
2

我正在構建一個允許用戶在屏幕上繪製的應用程序。我想添加網絡功能,以便用戶A可以使用用戶B的屏幕。我目前的計劃是建立一個系統,在該系統中我有自己的UserOrNetworkTouch對象,該對象可以基於真實的UITouch或通過網絡傳遞的消息創建,並且可以將應用程序中的所有繪圖基於UserOrNetworkTouch事件創建比UITouch事件。通過網絡發送UITouches

我希望使用此係統的另一件事是錄製觸摸,因此用戶將能夠按下「錄製」,然後在以後播放他們的繪圖。

我想確保我不會在這裏重新發明輪子。有沒有任何圖書館可以處理一些或所有這些對我來說?

回答

3

你可能不會通過網絡發送UITouch對象(儘管你可以如果你想要的話)。我可能打包,然後觸摸位置到某種類型的結構中,只需發送它以減少您發送的流量。如果您確實需要整個UITouch對象及其所有數據,請將對象發送到您的服務器。

您可以使用CFNetwork框架將數據從客戶端應用程序發送到服務器。如果你確實應該嘗試使用IPv6。

蘋果有示例代碼這裏與CFNetwork的streams

工作。如果你想記錄的觸摸事件,只需使用一個NSArrayNSDictionary如果你想儲存說與時間戳一起摸上去當觸摸發生。

然後只要將每個觸摸添加到數組或字典中,就像用戶創建它們一樣。

更新:我不會浪費您的時間與Apple的WiTap示例代碼。我已經閱讀過,而且它裏面有很多代碼,如果你想讓一個簡單的客戶端/服務器應用程序快速啓動並運行,這只是令人困惑和無關的。如果你以前沒有做過任何網絡編程,那麼對你而言,這可能會讓你感到非常困惑。

我會先讓網絡傳輸工作,然後如果您喜歡,您可以參考Bonjour網絡部分的WiTap,以便您可以自動發現客戶端和服務器。但是隻有在數據流首先工作後才能添加Bonjour支持。

+0

Bonjour不難,你可以跳過CFNetwork並直接使用NSStreams。 WiTap的代碼主要是Bonjour,並提供了一個表格視圖,展示了滿足您的應用需求的設備。 蘋果有另一個優秀的樣本,只是更新,'PictureSharing'。雖然它是基於Mac的,但代碼在iPhone上運行得很好。它使用Bonjour進行連接,並有一些有用的運行循環/ NSOperation類;在他們的情況下發送文件,但你可以使用它們發送任何東西。 – 2010-08-30 02:18:43

0

蘋果公司的WiTap sample是一個好地方。它在Bonjour上設置了一個遊戲並且來回發送水龍頭。

另外看看GameKit會讓一些網絡變得更簡單。

SQLite數據庫將是一個記錄事件的好地方。搜索一個漂亮的Objective-C包裝器的'fmdb'SQLite包裝器。