2 Stimmen

UITouches über ein Netzwerk senden

Ich baue eine Anwendung, mit der ein Benutzer auf dem Bildschirm zeichnen kann. Ich möchte die Netzwerkfähigkeit hinzufügen, damit Benutzer A auf dem Bildschirm von Benutzer B zeichnen kann. Mein derzeitiger Plan ist es, ein System zu bauen, wo ich meine eigenen UserOrNetworkTouch-Objekt, das entweder auf der Grundlage einer echten UITouch oder eine Nachricht, die über das Netzwerk kommt erstellt werden kann, und Basis alle die Zeichnung in der App aus UserOrNetworkTouch Ereignisse, anstatt UITouch Ereignisse.

Außerdem möchte ich dieses System für die Aufzeichnung von Berührungen verwenden, so dass ein Benutzer "Aufnahme" drücken und seine Zeichnung zu einem späteren Zeitpunkt wiedergeben kann.

Ich möchte sicherstellen, dass ich das Rad hier nicht neu erfinde. Gibt es irgendwelche Bibliotheken zur Verfügung, die einige oder alle diese für mich behandeln wird?

3voto

Brock Woolf Punkte 45353

Sie würden wahrscheinlich nicht die UITouch Objekte über das Netz zu übertragen (obwohl Sie das könnten, wenn Sie wollten). Ich würde dann die Berührungspositionen in eine Art Struktur verpacken und nur diese senden, um den Datenverkehr zu verringern, den Sie senden. Wenn Sie das gesamte UITouch-Objekt und alle seine Daten benötigen, dann sicher, senden Sie das Objekt an Ihren Server.

Sie könnten verwenden CFNetwork Framework, um Daten von Ihrer Client-Anwendung an einen Server zu senden. Wenn Sie dies tun, sollten Sie wirklich versuchen, IPv6 zu verwenden.

Apple hat hier Beispielcode für die Arbeit mit CFNetwork streams

Wenn Sie die Berührungsereignisse aufzeichnen möchten, verwenden Sie einfach ein NSArray oder ein NSDictionary wenn Sie z. B. die Berührung zusammen mit einem Zeitstempel für den Zeitpunkt der Berührung speichern möchten.

Dann fügen Sie einfach jede Berührung dem Array oder Wörterbuch hinzu, wenn der Benutzer sie vornimmt.

Aktualisierung: Ich würde Ihre Zeit nicht mit dem WiTap-Beispielcode von Apple verschwenden. Ich habe es durchgelesen und es gibt eine Menge Code darin, der einfach verwirrend und irrelevant ist, wenn Sie eine einfache Client/Server-App schnell zum Laufen bringen wollen. Es wird höchstwahrscheinlich viel zu verwirrend für Sie sein, wenn Sie noch keine Netzwerkprogrammierung gemacht haben.

Ich würde zuerst die Netzwerkübertragungen zum Laufen bringen, dann können Sie, wenn Sie möchten, auf WiTap für den Bonjour-Netzwerkteil, so dass Sie die automatische Erkennung von Client und Server durchführen können. Fügen Sie die Bonjour-Unterstützung aber erst hinzu, wenn Sie die Datenströme zum Laufen gebracht haben.

0voto

Graham Perks Punkte 22203

Ein guter Startpunkt wäre die Apples WiTap-Probe . Es richtet ein Spiel über Bonjour ein und sendet Taps hin und her.

Schauen Sie sich auch GameKit an, das einige der Vernetzungen noch einfacher machen wird.

Eine SQLite-DB wäre ein guter Ort, um Ereignisse aufzuzeichnen. Suchen Sie nach dem 'fmdb' SQLite Wrapper für einen schönen Objective-C Wrapper.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X