Ruby on Railsについては何も知りませんが、あなたがやろうとしていることを実行することは知っています(ユーザーが自分の名前とGPS位置を含む写真をサーバーにアップロードし、他のユーザーがその写真をダウンロードして表示できるようにします)彼らのアプリに)。
サーバーを構築する1つの方法は、RubyonRailsを使用してWebサービスを構築することです。
Webサービス
Webサービス(サーバー)は2つのことを行います。
1)リクエストを受け入れる
2)応答を返す
Webサービスでは、HTTP POSTまたはGETリクエストを受け入れると、サーバーのロジックコードがPOSTまたはGET内の「パラメーター」または「変数」を解析します。
サーバーがこれらの変数を取得すると、それらをデータベースに保存できます(ORMを使用すると非常に簡単になります)。
Webサービスは、HTTPステータスコードまたはJSON形式の応答を使用して応答を返すことができます。
シナリオ例
1)iPhoneアプリが写真を撮り、 ASIHttpRequestまたはAFNetworkingを使用してRubyサーバーにHTTPPOSTリクエストを送信します。
// ASIExample
-(void)uploadPhotoToServer
{
NSURL *url = [NSURL urlWithString:myUploadWebServiceURL];
__block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
// ---------------------------------------------------------------
// setting the POST parameters below
// note: you will need to get the NSData from a UIImage object
// ---------------------------------------------------------------
[request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"];
[request setPostValue:fldName.text forKey:@"name"];
[request setPostValue:[NSNumber numberWithDouble:myLatitude] forKey:@"latitude"];
[request setPostValue:[NSNumber numberWithDouble:myLongitude] forKey:@"longitude"];
[request setCompletionBlock:^{
int statusCode = [request responseStatusCode];
if(statusCode == 200)
{
[self alertUploadComplete];
}
}];
[request setFailBlock:^{
NSLog(@"Server error: %@", [[request error] localizedDescription]);
[self alertConnectionProblem];
}];
[request startAsynchronous];
}
2)サーバーはリクエストを受信し、データを解析してレスポンスを返します
// Symfony Web Framework example (PHP based web framework)
public function uploadPhotoAction()
{
// --------------------------------------------------
// check to make sure all POST parameters are sent
// in the POST request by iPhone app.
// --------------------------------------------------
if(
!isset($_REQUEST['name']
|| !isset($_REQUEST['latitude']
|| !isset($_REQUEST['longitude']
|| !isset($_REQUEST['photo']
)
{
return new Response($this->sendResponse(406, 'Missing POST parameters');
}
else // assumes safe to continue
{
/*
write code to save the your name, latitude, longitude to your database here
*/
/*
save your photo to your server's dedicated photo folder, then store
the file path to the file in your database entry in the above step
*/
return new Response($this->sendResponse(200, 'Photo uploaded'));
}
}