为现有的 rails 应用程序创建 iphone 和 android 应用程序

Posted

技术标签:

【中文标题】为现有的 rails 应用程序创建 iphone 和 android 应用程序【英文标题】:Creating iphone & android apps for existing rails app 【发布时间】:2011-04-28 14:30:35 【问题描述】:

我刚刚花了很多时间研究为我构建的现有 rails 应用程序创建 iphone 和 android 应用程序的最佳方法,但我觉得我实际上还没有更接近了解如何做到最好实现这一目标。

我想要什么:

我希望将 rails 应用程序和移动代码完全分开。我不想在我的 Rails 应用程序中呈现不同的布局。我更喜欢使用 phone gap 之类的东西,它允许我使用大致相同的代码库来运行移动应用程序。 我希望在移动应用程序中具有离线/同步功能(因此,如果用户在其 iPhone 上创建记录而他们不在覆盖范围内,则应用程序应将记录保存在手机上并继续尝试同步该记录到网络应用程序,直到成功。 以后将需要访问硬件功能。 GPS、加速度计等。

我的问题:

这是使用 oauth 的好时机吗?我是否可以在我的网络应用中构建一个 oauth 提供程序,然后将这两个移动应用构建为网络应用的客户端? 我是否缺少一种更简单的安全授权方法? Devise 是否可以与 oauth 一起使用?目前,我的应用是在设计之上构建的。 此同步是否应抽象为中间件或金属?

抱歉,我知道这实际上是很多问题,但我希望熟悉情况的人能够全面地回答,而不是简单地戳几下就留下更多问题。我觉得这在当今一定是一种常见情况,但我似乎无法在搜索中找到任何最新信息。

干杯!

ps。 - 如果您自己做过类似的事情并且知道如何完成,我很乐意直接与您交谈。我什至会买啤酒。说真的……没有人接受?

【问题讨论】:

Erskingardner,当您有多个问题时,您应该创建多个问题,以便每个问题都有一组单独的答案,可供其他人搜索和使用。 【参考方案1】:

也许您会发现我的示例 rails + ember.js 应用程序具有基于 ember-auth 和几种 OAuth 策略的令牌身份验证。它响应迅速,可作为 桌面移动 应用与 Phonegap 一起使用。

目前在开发分支:https://github.com/joscas/base_app/tree/devel

Life here:https://starter-app-staging.herokuapp.com 桌面版。

它使用phonegap-rails gem(我也是它的作者)轻松导出应用资产、修复路径等。

【讨论】:

嘿@joscas,你能提供更多细节吗?我正在尝试创建类似的应用程序,该应用程序可以在离线时在 Android 上运行,并与托管在 vps 上的 rails 服务器同步。当应用程序能够访问互联网时,它将连接到 rails 服务器并上传/获取数据。 对于该应用程序的离线数据同步,我将使用 Couchbase mobile developer.couchbase.com/mobile。看到他们有 Phonegap 支持。否则,如果您没有多个用户和安全问题,则基本的 CouchDB 复制将起作用。【参考方案2】:

我正在构建一个带有 grails 后端的移动应用程序,必须支持 android 和 iphone

到目前为止,我已经进行了几次迭代,同时试图确定技术、本机 Objective-c、本机 android、phoneGap 和钛应用加速器。

对于身份验证,我使用带有基本身份验证的 HTTPS。我知道人们关心基本身份验证,但有人认为这两种方式都可以看到*** Question

我还没有解决同步问题,但我不希望最初实现那种复杂的解决方案,将存储本地内容(XML 或 JSON)并按需推送回服务器。内容以与发布到服务器时相同的格式存储在本地

grails 中的后端,所有 REST API 调用都会在每个请求上记录和验证。可能会增加额外的安全性,只允许特定的注册设备访问 API 作为和额外的安全级别

【讨论】:

好的,谢谢亚伦的解释。在这样的事情上听到很多观点总是好的。【参考方案3】:

我一直在构建一个带有 Rails 后端的 iPhone 应用程序。我一直在使用 Objective-C,因为它需要完整的 Core Location 框架,而基于浏览器的解决方案不具备该框架。所以如果你想使用设备的全部功能,你必须使用原生开发环境。

我一直在使用 Objective Resource http://iphoneonrails.com/,它是一个开源框架,它为 Objective C NSObject 类提供类似 Active Resource 的扩展,并且与我的 Rails 应用程序配合得很好。您只需为您的控制器操作输入渲染 JSON 或 XML,如下例所示。

 class UsersController < ApplicationController
 # GET /users
 # GET /users.xml
 def index
   @users = User.all

  respond_to do |format|
  format.html # index.html.erb
  format.xml   render :xml => @users 
  format.json   render :json => @users 
end

结束

如果这回答了您的所有问题,我不知道,因为我对您的应用了解不够,但这是一个很好的起点。

【讨论】:

酷。感谢罗伯特的快速回复。使用该解决方案,您的 Rails 后端是否也可以通过普通 Web 界面访问?或者它只是服务于 iphone 应用程序?我真的很想了解更多有关 Objective Resource 的信息,但在我开始提问之前我会先研究一下。 它也可以通过网络界面访问,但这只是为了测试目的,因为它纯粹是作为 iPhone 应用程序后端设计的。我开发 Rails 代码,最初在浏览器上对其进行测试,然后使用 Objective Resource 来连接它。 您在应用程序和后端之间使用了哪些身份验证(如果有的话) - 有什么陷阱/提示吗?谢谢。 我的应用处于原型阶段,所以我还没有做任何关于身份验证的事情。

以上是关于为现有的 rails 应用程序创建 iphone 和 android 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

为现有的 Jersey 项目从 Netbeans JPA 添加休眠

findViewById 为现有的包含布局返回 null

OC基础回想类别

在 Laravel 中为现有的 InnoDB 关系设置 Eloquent 关系

将 Json 数据解析为现有的 Flutter 小部件

为现有的 NodeJS 服务器生成 Swagger 文档