文档章节

可扩展的开源移动端框架:Helios

m
 mingxun
发布于 2014/05/08 13:18
字数 2200
阅读 182
收藏 4

可扩展的开源移动端框架:Helios

发布于:2014-05-08 09:37阅读数:543

Helios是一个开源框架,为iOS应用程序提供基本的后端服务,可提供从数据同步、用户账户到消息推送、IAP以及Passbook集成等服务。它使得开发者在短短几分钟内就可以获得并且运行一个客户端

阅读器

Helios

Helios是一个开源框架,为iOS应用程序提供基本的后端服务,可提供从数据同步、用户账户到消息推送、IAP以及Passbook集成等服务。它使得开发者在短短几分钟内就可以获得并且运行一个客户端-服务器应用程序以及必要的功能性无缝整合。

 

Helios是专门为“移动为先”的开发而设计的,在设备上创建了伟大的功能,并实现了必需的服务器端组件。把你所有的精力投入到制作一个伟大的用户体验中,而不是因后端陷入困境。

 

Helios中关于这个理论有一个很棒的例子,那就是Core Data数据同步。它允许你使用现有的Core Data模型的定义来自动的生成一个REST网络服务,可用于在服务器和客户端传送数据。没有iCloud也没有问题。

 

Helios还附带一个Web UI。浏览并查找你的所有数据库记录、推送注册通知、应用程序内购买以及passbook passes。你甚至还可以从浏览器发送有针对性的推送通知。

 

基本要求

1. Ruby 1.9

2. PostgreSQL 9.1 (Postgres.app是一个让Postgers服务器在Mac上运行的最简单的方法。)

 

在OS X系统上开始

1. 验证Ruby安装: 

$ ruby -v

如果你没看到Ruby 1.9x输出,我们建议你安装RVM来管理Ruby版本

 

2. 根据命令提示符安装Helios:

$ gem install helios

 

3. 创建一个新的Helios应用程序:

$ helios new myapp

 

4. 根据命令提示符创建一个Postgres数据库:

$ createdb -h localhost myapp

 

从由Helios生成的.env文件读取数据库证书,作为DATABASE_URL变量。默认情况下,会用生成的应用程序的名称指向一个数据库。

1. 进入到myapp目录:

$ cd myapp

 

 2. 启动web服务器:

$ helios server

 

3. 转到http://localhost:5000/admin,你将会看到你的应用程序的Web UI

 

阅读下面的说明:

1. 链接一个Core Data模型

2. 将Helios集成到你的移动客户端

 

使用方法

建立在Rack webserver接口之上,Helios作为中间件,能够很容易地被添加到现有的Rails或者Sinatra应用程序中。或者,如果你启动一个Helios应用程序,你能在其上建立一个新的Raild或者Sinatra应用程序。

 

这意味着,你能用自己喜欢的工具和框架开发你的应用程序,并能随着需求的发展维持架构的灵活性。

 

Sinatra/Rack

Gemfile 

gem 'helios'

 

config.ru

require 'bundler' Bundler.require run Helios::Application.new do   service :data, model: 'path/to/DataModel.xcdatamodel'   service :push_notification, apn_certificate: 'path/to/apple_push_notification.pem', apn_environment: 'development'   service :in_app_purchase   service :passbook end

 

Rails

想要创建一个用Postgres作为数据库的Rails应用程序,需要将-d postgresql语句传递给rails new命令:

$ rails new APP_PATH -d postgresql

 

如果你将Helios添加到现有的Rails工程中,确保在config/database.yml中指定一个PostgreSQL数据库,并检查pg Gem包含在你的Gemfile中:

Gemfile 

gem 'helios' gem 'pg'

通过把这个添加到config/application.rb的配置块中,Helios可作为Rails中间件运行。

 

config/application.rb

config.middleware.use Helios::Application do   service :data, model: 'path/to/DataModel.xcdatamodel'   service :push_notification, apn_certificate: 'path/to/apple_push_notification.pem', apn_environment: 'development'   service :in_app_purchase   service :passbook end

 

可用服务

Helios中的每个服务都可以单独启动和配置:

 

data:从一个模式定义中生成一个REST webservice。目前支持Core Data (.xcdatamodel) 文件。

 

参数

model: 数据模型文件路径

 

相关的类:

指定数据模型中的每个实体都将有一个Sequel::Mode子类,这个子类在Rack::CoreData::Models命名空间下创建。

 

端点

push_notification: 增加iOS推送式通知注册/注销端点。

 

相关的类:

Rack::PushNotification::Device

 

端点

in_app_purchase: 增加一个iOS应用程序内购买收到验证的端点,还有一个返回产品标识符的端点。

 

 

相关的类

Rack::InAppPurchase::Receipt Rack::InAppPurchase::Product

 

端点

passbook:通过添加web服务器协议端点来与Passbook通信。  

 

相关的类:

Rack::Passbook::Pass Rack::Passbook::Registration

 

端点 

 

newsstand: 增加Newsstand端点。使用plist-based网络服务和Atom feeds全面管理问题和资产。

 

相关的类

Rack::Newsstand::Issue

 

端点

 

命令行接口

Helios配有一个CLI,来帮助创建和管理你的应用程序。在你$ gem install helios之后,你将会有可用的helios二进制。 

 

创建应用程序

使用Helios的第一步是创建一个新的应用程序。可以使用$ helios 新命令来完成,如果你用过Rails,你会很熟悉这个命令。 

 

连接一个Core Data模型

为了保持数据模型和REST webservice同步,你可以将它链接到你的helios应用程序。

$ helios link path/to/DataModel.xcdatamodel

 

这在Xcode的数据模型文件和Helios项目之间创建了一个硬链接,任何一个文件的改变将会影响另外一个。下一次你启动服务器时,Helios将会自动的移植数据库来建立一个表单和插入列来存储任何新的实体或属性。

 

在本地启动应用程序

在localhost上的开发模式中运行Helios,运行server命令:

$ helios server

 

测试推送通知

一旦你注册了一个设备并设置了证书,试试这个:

$ curl -X POST -d 'payload={"aps": {"alert":"Blastoff!"}}' http://localhost:5000/message

 

为Newsstand设置存储器

为了给Newsstand设置存储器,你将需要以下云存储提供商之一的账户:

Amazon

Google

Rackspace

 

在你的应用程序目录中,用你的证书为你所选的云存储供应商编辑一个config.ru。以下是使用AWS配置的例子。

require 'bundler' Bundler.require app = Helios::Application.new {     service :data, model: Dir['*.xcdatamodel*'].first if Dir['*.xcdatamodel*'].any?     service :push_notification     service :in_app_purchase     service :passbook     service :newsstand, { :storage => {         :provider => 'AWS',         :aws_access_key_id => 'YOUR_ACCESS_KEY_ID',         :aws_secret_access_key => 'YOUR_SECRET_ACCESS_KEY'         }     } } run app

其他的配置选项,请参考fog.io

 

运行Helios控制台

你可以在Helios应用程序的运行环境中启动一个IRB会话,使用控制命令:

$ helios console

 

这个命令可以激活Helios应用程序配置的服务,包括任何生成的Core Data模型。启动时自动包含rack模块,允许你直接访问一切:

> Passbook::Passes.all # => [...]

 

部署到Heroku

Heroku是激活和运行应用程序的最简单的方法。如何启动的详细说明请查阅“Getting Started with Ruby on Heroku"。

 

一旦你安装了Heroku Toolbelt,并且有一个Heroku账号,那么你可以从项目目录中输入如下命令行:

$ heroku create  $ git push heroku master

 

集成一个iOS应用程序

Core Data同步 

使用 AFIncrementalStore, 你可以直接将Helios应用程序集成到Core Data栈中。无论它是一个获取或者保存更改需求,或者是实现一个属性,AFIncrementalStore能够处理所有从服务器读写或者向服务器读写所需要的网络连接。

 

请看Heroku开发者中心的“Building an iOS App with AFIncrementalStore and the Core Data Buildpack”来理解如何使用AFIncrementalStore和Core Data Buildpack。即将有一篇Helios的文章,除了部署外,其他本质上没有变化。

 

推送通知注册

使用Orbiter可以很简单的将推送通知集成到你的应用程序中:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {     NSURL *serverURL = [NSURL URLWithString:@"http://raging-notification-3556.herokuapp.com/"];     Orbiter *orbiter = [[Orbiter alloc] initWithBaseURL:serverURL credential:nil];     [orbiter registerDeviceToken:deviceToken withAlias:nil success:^(id responseObject) {         NSLog(@"Registration Success: %@", responseObject);     } failure:^(NSError *error) {         NSLog(@"Registration Error: %@", error);     }]; }

 

转换你的推送通知证书

这些指令来自Rails项目中APN.

一旦你的应用程序有苹果授权的证书,将你的密钥和这个授权证书作为p12文件输出。以下快速地介绍如何做到这一点:

1. 单击密钥访问中授权证书旁边的箭头,然后选择这个证书和密钥。

2. 右击选择Export 2 items。

3.下拉选择p12模式,并命名为cert.p12。

 

现在将p12文件转换到pem文件中:

$ openssl pkcs12 -in cert.p12 -out apple_push_notification.pem -nodes -clcerts

 

未来改进

Helios还有很多地方需要提高,这有一些好的想法:

1. 测试覆盖率

2. 更多的文档

3. 更多的示例

4. 更好的RubyMotion集成

5. 支持多模式定义(不只有Core Data)

6. 从UI发送推送通知

7. 支持其他平台(Android, WP7)

 

联系我们

Mattt Thompson

http://github.com/mattt

http://twitter.com/mattt

mattt@heroku.com

 

授权

Helios基于MIT协议发布。


本文转载自:http://www.cocoachina.com/applenews/devnews/2014/0508/8349.html

共有 人打赏支持
m
粉丝 3
博文 138
码字总数 9074
作品 0
崇明
针对开发者的21款移动开发框架

随着移动互联网的持续升温,企业选择开发对应的webapp网站已经成为了必要。下面笔者收集了21款针对开发者的移动开发框架,基于它们可以快速开发一个webapp网页或者hybridapp混合app,或者一些...

丨小丶牧灬
2015/07/23
433
2
针对开发者的20+款移动开发框架

本文收集了20款针对开发者的移动开发框架,以帮助他们为移动爱好者开发出新颖、有用、有趣味的应用。 1.Fries Fries是一款稳定的HTML-CSS-JS框架,用于在实际项目和原型设计中创造类似于And...

liuher
2014/07/26
0
0
LoopBack 2.39.0 发布,高度可扩展的 Node.js 框架

LoopBack 2.39.0 已发布,更新如下: 不再支持 Node.js 0.10 和 0.12 版本 test: 修复测试断言太严格的问题 为 empty password 添加单元测试 更新翻译字符串 Q2 2017 更多详情和下载地址可查...

王练
2017/10/24
626
0
LoopBack 3.19.1 发布,高度可扩展的 Node.js 框架

LoopBack 3.19.1 已发布,这是一个小的修复版本,解决了 multiple-principal setup 中 isOwner()的 bug 。详情 LoopBack 是一款高度可扩展的开源 Node.js 框架,能够: 创建动态的端到端 ...

王练
05/22
0
0
腾讯优图开源神经网络框架 ncnn ,主打移动端

ncnn 是腾讯优图实验室首个开源项目,是一个为手机端极致优化的高性能神经网络前向计算框架,于今日正式开源。 ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 ...

王练
2017/07/24
3.6K
21

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(一)软件测试专题——之Linux常用命令篇01

本文永久更新地址:https://my.oschina.net/bysu/blog/1931063 【若要到岸,请摇船:开源中国 不最醉不龟归】 Linux的历史之类的很多书籍都习惯把它的今生来世,祖宗十八代都扒出来,美其名曰...

不最醉不龟归
15分钟前
3
0
蚂蚁金服Java开发三面

8月20号晚上8点进行了蚂蚁金服Java开发岗的第三面,下面开始: 自我介绍(要求从实践过程以及技术背景角度着重介绍) 实习经历,说说你在公司实习所做的事情,学到了什么 关于你们的交易平台...

edwardGe
22分钟前
7
0
TypeScript基础入门 - 函数 - this(三)

转载 TypeScript基础入门 - 函数 - this(三) 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.4 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
31分钟前
0
0
Spark core基础

Spark RDD的五大特性 RDD是由一系列的Partition组成的,如果Spark计算的数据是在HDFS上那么partition个数是与block数一致(大多数情况) RDD是有一系列的依赖关系,有利于Spark计算的容错 RDD中每...

张泽立
39分钟前
0
0
如何搭建Keepalived+Nginx+Tomcat高可用负载均衡架构

一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已...

Java大蜗牛
54分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部