0

新しい質問を開いて申し訳ありませんが、iPhone から他の質問を未登録ユーザーとして書いたので、iPhone から書くのはあまり快適ではありません。

質問を言い換えると:

次のものを使用することは可能ですか:

[NSMutableArray writeToURL:(NSString *)アトミックにパス:(BOOL)AuxSomething];

ファイル (NSMutableArray) XML ファイルを URL に送信し、そのファイルを含むように URL を更新するには?

例: アレイがあり、それを特定の URL にアップロードし、次にアプリを起動したときにそのアレイをダウンロードしたいとします。

NSMutableArray *arrayToWrite = [[NSMutableArray alloc] initWithObjects:@"One",@"Two",nil];

[arrayToWrite writeToURL:

[NSURL urlWithString:@"mywebsite.atwebpages.com/myArray.plist"] アトミックに:YES];

そして実行時に:

NSMutableArray *arrayToRead =

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


つまり、NSMutableArray を Web ホスティング サービス(batcave.net など) にあるURL に書き込みたいとします。URL は情報を受け取り、それに応じてサーバー側のファイルを更新します。セットアップのようなハイスコア、ユーザーが自分のスコアを送信し、サーバーがファイルを更新し、他のユーザーが実行時にハイスコアをダウンロードします。

これが明確になることを願っています。

編集:私が探しているのは、PHPまたはASPのスクリプトを作成して、データの送信先のURLであるWebサイトがそれを処理する方法を知ることです。Web ホスティング サービスでこれを実行できる場合は、データを処理するためにこのスクリプトを実装する方法の例またはチュートリアルが必要です。

〜よろしくお願いします。

4

2 に答える 2

2

「システムのようなハイスコアを作成するにはどうすればよいですか?」という質問に答えるために、システムには複数の部分があります。

  • ユーザーごとに ID が必要です (iPhone で生成された GUID とユーザー名で十分です)。
  • 次のようなサーバーが必要です。ハイスコアを記憶します。ユーザーから高得点を受け取ります。ハイスコ​​アを (Web サイトに) 表示したり、ハイスコアを携帯電話にダウンロードできるようにしたりします。
  • 脱獄者との戦いに負ける可能性は高いですが、詐欺対策が必要です。

iPhone アプリ側では、現在のハイスコアをダウンロードして表示できるようにしたい場合があります。これは、次のような方法で簡単に実行できます。

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;
}

これは同期であるため、NSOperation 内に配置することをお勧めします。または、使用することができます

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

ハイスコ​​ア データは非常に小さいため、URL にエンコードして送信するのが最も簡単な方法です。

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

ここで、encodeParameter は、URL パラメーターをエンコードする NSString のカスタム カテゴリであり、secureHash は、iPhone アプリと Web サイトに知られている uid、名前、スコア、およびいくつかの秘密の一方向の安全なハッシュを表す文字列です。これはすでに長くなっているので、これらを自分で理解するか、別の質問をする必要があります。

于 2009-06-24T01:28:06.657 に答える
0

NSData writeToURL ドキュメントによると (少なくとも iPhone OS 2.2.1 の場合):

「現在、file:// URL のみがサポートされているため、このメソッドと writeToFile:atomically: の間に違いはありません。ただし、最初の引数のタイプを除きます。」

NSArray/NSDictionary/NSString のドキュメントには制限について特に言及されていませんが、同じ制限が適用される可能性が非常に高いと思われます。

そのため、他のメカニズムを使用して XML をアップロードする必要があります。

また、アップロードをサポートするために Web サーバーに特定のコードを提供しない限り、Web サイトは通常読み取り専用です。

于 2009-06-21T09:35:22.027 に答える