2009-06-21 12 views
0

Es tut mir leid für das Öffnen einer neuen Frage, ich musste - wie ich schrieb die andere Frage von meinem iPhone als nicht registrierter Benutzer und es ist nicht sehr bequem, vom iPhone zu schreiben.Erstellen eines Highscore wie System, iPhone Seite

Umformulierung die Frage:

Ist es möglich, die zu verwenden:

[NSMutableArray writeToURL: (NSString *) Pfad atomar: (BOOL) AuxSomething];

Um eine Datei (NSMutableArray) XML-Datei an eine URL zu senden und die URL zu aktualisieren, um diese Datei zu enthalten?

zum Beispiel: Ich habe ein Array und ich möchte es auf eine bestimmte URL hochladen und beim nächsten Start der App möchte ich dieses Array herunterladen.

NSMutableArray * arrayToWrite = [[NSMutableArray alloc] initWithObjects: @ "Eins", @ "Zwei", nil];

[arrayToWrite writeToURL:

[NSURL urlWithString: @ "mywebsite.atwebpages.com/myArray.plist"] atomar: YES];

und zur Laufzeit:

NSMutableArray * arrayToRead =

[[NSMutableArray alloc] initWithContentsOfURL: [NSURL urlWithString: @ "mywebsite.atwebpages.com/myArray.plist"]];

Bedeutung, ich eine NSMutableArray zu einer URL schreiben möchten, die auf einem Web-Hosting-Service ist
(z batcave.net) empfängt die URL, die Informationen und Updates Server seitige Dateien entsprechend. Ein Highscore wie Setup, Benutzer sendet seine Ergebnisse, der Server aktualisiert seine Dateien, andere Benutzer laden die Highscores zur Laufzeit herunter.

Ich hoffe, dass dies geklärt ist.

Edit: Was ich suche, ist PHP oder ASP-Skript, so dass die Website, die URL, wo die Daten gesendet werden, weiß, wie man damit umgehen. Ich möchte ein Beispiel oder eine Anleitung zur Implementierung dieses Skripts für den Umgang mit Daten, wenn dies in einem Webhosting-Dienst möglich ist.

~ Vielen Dank im Voraus.

+2

Bitte erstellen Sie keine Duplikate (http://stackoverflow.com/questions/1022714/nsmutablearray-writetourl). Selbst als neuer Benutzer könnten Sie diesen Inhalt natürlich als Antwort auf Ihre andere Frage gepostet haben. –

+0

(Whispers) Wenn Sie doppelte Fragen posten, sagen Sie zumindest nicht, dass Sie das tun. –

Antwort

2

Zur Beantwortung der Frage „Wie kann ich eine hohe Punktzahl wie System zu schaffen“, gibt es mehrere Teile des Systems:

  • Sie für jeden Benutzer eine ID benötigen (eine GUID auf dem iPhone erzeugt, zusammen mit dem Benutzernamen sollte ausreichend sein).
  • Sie benötigen einen Server, der: hohe Werte speichert; erhält hohe Punktzahlen von Benutzern; entweder zeigt (auf einer Website) die hohen Punktzahlen an und/oder stellt die hohen Punktzahlen zum Herunterladen auf das Telefon bereit.
  • Sie brauchen etwas Betrugsschutz, obwohl das wahrscheinlich einen verlustreichen Kampf gegen Jailbreaker bedeutet.

Auf der iPhone App Seite, mögen Sie vielleicht in der Lage sein, das aktuelle High-Scores für die Anzeige zum Download, die mit so etwas wie leicht genug getan wird:

int statusCode = 0; 
NSData* result = nil; 
NSHTTPURLResponse* response = nil; 
NSError* error = nil; 
NSString* url = @"http://www.yourserver.com/highscores.php"; // returns XML plist data 
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:180]; 
result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
// NSLog(@"NSURLConnection result %d %@ %@", [response statusCode], [request description], [error description]); 
statusCode = [response statusCode]; 
if ((statusCode == 0) || (!result && statusCode == 200)) { 
    statusCode = 500; 
} 

Da es synchron ist, können Sie möchte es in eine NSOperation einfügen. Alternativ können Sie

+ (NSURLConnection *)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate 

verwenden, um Highscore-Daten zu senden, weil es so klein ist, ist der einfachste Weg, es einfach in der URL zu kodieren ist.

NSString* url = [NSString stringWithFormat:@"http://www.yourserver.com/sethighscores.php?uid=%@;name=%@;score=%d;antifraud=%@", [uid encodeParameter], [name encodeParameter], score, [secureHash encodeParameter]]; 

Wo encodeParameter eine eigene Kategorie auf NSString ist, die URL-Parameter und secureHash ist eine Zeichenfolge, die eine Einweg sicheres Hashing der uid, Namen, Partitur und ein Geheimnisses bekannt zu Ihrem iPhone App und Ihrer Website codiert. Sie müssen diese selbst herausfinden oder separate Fragen stellen, da dies schon lange dauert.

0

Nach NSData writeToURL docs (zumindest für iPhone OS 2.2.1):

„Da derzeit nur file: // URLs werden unterstützt, es gibt keinen Unterschied zwischen diesem Verfahren und writeToFile ist: atomar :, außer für den Typ des ersten Arguments. "

Obwohl die Dokumentation für NSArray/NSDictionary/NSString die Einschränkung nicht ausdrücklich erwähnt, scheint es sehr wahrscheinlich, dass die gleiche Einschränkung gilt.

Sie müssen also die XML mit einem anderen Mechanismus hochladen.

Außerdem sind Websites in der Regel nur lesbar, es sei denn, Sie stellen bestimmten Code auf dem Webserver bereit, um das Hochladen zu unterstützen.

+0

Das ist was ich interessiere, ich denke, es gibt kein Problem mit der WriteToURL-Methode, Das Problem ist Skripting, ich brauche einige Skript Erklärung, wenn es PHP oder ASP ist, damit ich Daten verarbeiten kann, die an die URL gesendet wird. – natanavra

+0

Nun, es gibt ein Problem mit der writeToURL-Methode, da es nur mit file: // URLs funktioniert, so dass es niemals auf eine Website zugreift (na ja, außer dass man eine Website als Festplatte mounten könnte). –

+0

Hmmm, wie schaffen Leute dann Highscore-Server? Könntest du bitte etwas ausarbeiten, weil ich genau danach suche, ich möchte Daten von einem iPhone erhalten und eine Webseite entsprechend aktualisieren und dann können andere iPhone-Nutzer die Informationen mit (initWithContentsOfURL :) herunterladen. MEINE BASISFRAGE IST: Wie erstelle ich ein Highscore-ähnliches System. – natanavra