-1

Well , I have just started coding in general. I am trying to make an ios social app with basic picture information taking data from a website ( some what of a flickr-clone)

So , the main website will be built on Ruby on rails.

EDIT :

ok so , i want to know when a person uploads a picture , it will have the following entries: * name * who took * location

I was researching about the gem logtrend (https://github.com/gorsuch/logtrend) , i was wondering if I can make a trending feed of sorts using location?

eg: the user selects a tab which shows them the trending pic ( near them (based on his core location) ?? Can we do something like that ?

4

3 回答 3

0

我对 Ruby on Rails 一无所知,但我知道要做你想做的事情(让用户将带有姓名和 GPS 位置的照片上传到服务器,然后允许其他用户通过下载来查看该照片到他们的应用程序)。

构建服务器的一种方法是使用 Ruby on Rails 构建 Web 服务。

网络服务

Web 服务(您的服务器)做两件事:

1) 接受请求

2) 返回响应

使用 Web 服务,您接受 HTTP POST 或 GET 请求,然后您的服务器的逻辑代码将解析 POST 或 GET 中的“参数”或“变量”。

一旦您的服务器拥有这些变量,它就可以将它们保存到数据库中(ORM 确实会更容易)。

然后,您的 Web 服务可以使用HTTP 状态代码JSON格式的响应返回响应。

示例场景

1) iPhone 应用程序拍摄照片,然后使用 ASIHttpRequest 或 AFNetworking 向您的 Ruby 服务器发出HTTP POST请求

// 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'));
    }
}
于 2012-11-28T02:37:39.153 回答
0

您可以使用的几个 gem 是DeviseOmniAuth用于社交登录/身份验证。

有关按类别划分的更多宝石,请查看Ruby 工具箱

希望你好运!

于 2012-11-27T22:10:44.717 回答
0

这可以通过 ruby​​ on rails 实现吗?

是的,是的。

我应该使用什么宝石?

取决于您的方法和功能集。

另外,哪些 gem 可以用来制作 API 来支持 IOS 应用程序?

我认为您误解了 API 是什么。API 是客户端与主机交互的方式。

我建议您调查使用 JSON 在您的 IOS 应用程序和您的 Web 应用程序之间进行通信。IOS 和 Ruby/Rails 都非常有能力支持 JSON,并且相对轻量级。

此外,您需要详细定义IOS 应用程序在需要与 Web 应用程序交互的地方要做什么。

例子

  • IOS App (IA) 将图片保存到 Web App (WA)。
  • IA 可能会将同一张图片保存到 WA(覆盖)
  • IA 会被告知 WA 是否已满
  • IA 将登录 WA
  • IA 可以从 WA 注销
  • IA可以在WA上更改密码
  • WA 将拒绝来自未登录 IA 的命令
  • IA 可以从 WA 中检索用户的图片
  • IA 可以从 WA 中检索任何其他用户的图片

等等

现在,对于每一个,您都需要设计 API 来支持该功能。

于 2012-11-27T22:11:03.913 回答