文档章节

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

m
 mingxun
发布于 2014/05/08 13:18
字数 2200
阅读 181
收藏 4
点赞 0
评论 0

可扩展的开源移动端框架: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
博文 106
码字总数 9074
作品 0
崇明
针对开发者的20+款移动开发框架

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

liuher ⋅ 2014/07/26 ⋅ 0

针对开发者的21款移动开发框架

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

丨小丶牧灬 ⋅ 2015/07/23 ⋅ 2

LoopBack 2.39.0 发布,高度可扩展的 Node.js 框架

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

王练 ⋅ 2017/10/24 ⋅ 0

LoopBack 3.19.1 发布,高度可扩展的 Node.js 框架

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

王练 ⋅ 05/22 ⋅ 0

腾讯优图开源神经网络框架 ncnn ,主打移动端

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

王练 ⋅ 2017/07/24 ⋅ 21

2017八大热门JavaScript开发框架

  【IT168 评论】应用程序赋予了移动设备极大的易用性,只需动动手指,就可以支付账单,购物,在线订票等。但智能手机革命给开发人员带来了许多挑战,因为开发领域正在发生巨大的变化。面对...

it168网站 ⋅ 2017/02/21 ⋅ 0

App跨平台开发框架分析

所谓的跨平台app开发就是一套代码写完以后可以多端发布运行到各个平台,比如:安卓、iOS、web。 原生开发是一对一的,安卓、iOS需要分别写两套代码,学习成本高、开发成本高、后期维护麻烦;...

yiranhaiziqi ⋅ 2017/09/11 ⋅ 0

gRPC 1.0 发布,来自 Google 的 RPC 框架

一直以来,构建一个高度可扩展且松耦合的系统是很困难的。来自Google的gRPC框架致力于解决这个领域问题。它自去年面世以来收到了社区的大量关注和使用。8月23日Google正式发布了gRPC的1.0版本...

局长 ⋅ 2016/09/06 ⋅ 5

HTML5移动应用前端开发框架--Agile Lite

Agile Lite 是一个基于 HTML5+CSS3+JS 的移动应用开发框架,同时支持单页和多页模式,并提供无关 UI 和可扩展的框架结构 Agile 移动应用前端框架既解决了前端 UI 层的显示,耦合了高性能的 ...

红薯 ⋅ 2015/01/05 ⋅ 3

Cocoa 的 WebDAV 开发包--DAVKit

DAVKit 是一个 Cocoa 框架用于来 WebDAV 服务端进行通讯。支持下载、上传、拷贝、移动和删除文件和文件夹,所有操作都是异步的。你可扩展 DAVRequest 来实现自己的需求。 示例代码: DAVCre...

红薯 ⋅ 2014/03/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue使用mockjs

在使用vue开发的时候,一直疑惑与mockjs怎么用,开了mockjs的开发文档,还是一脸蒙蔽,无从下手!mockjs在前后端分离开发上进行模拟数据,是不可避掉的一环。在网上看了一些博文还有查阅了其...

JamesView ⋅ 23分钟前 ⋅ 0

解决问题的思路

1.相对来说,程序逻辑解决问题的思路应该更加趋向于通过逻辑结构来解决问题,而不是通过更小的类级别和方法级别的改进 2.类级别和方法级别的改进需要的技术能力更高一点

th778899 ⋅ 29分钟前 ⋅ 0

HTTP请求状态及jQuery AJAX请求异常处理

上一周调优一个项目的Js部分,其中一个严重的问题就是在页面初始化数据时,没有对异常进行处理, 导致Loading一直在等待中,无提示无处理。在用户体验上很不好,即使网络条件无法保证,在出错...

临江仙卜算子 ⋅ 29分钟前 ⋅ 0

error code 1874. innodb is in read only mode--报错解决

参考网页 https://zhidao.baidu.com/question/746894876932022292.html https://blog.csdn.net/shushugood/article/details/80226767 问题背景 创建了一个数据库然后想删除,因为自己本机性能......

karma123 ⋅ 31分钟前 ⋅ 0

JVM系列:jinfo命令详解

jinfo全称Java Configuration Info,主要作用是实时查看和调整JVM配置参数。 一.查看JVM参数 用法:jinfo -flag <name> PID 示例: # jinfo -flag MaxMetaspaceSize 11180 # -XX:MaxMetaspac......

Jacktanger ⋅ 35分钟前 ⋅ 0

exportfs命令、NFS客户端问题、FTP介绍、使用vsftpd搭建ftp

1. exportfs命令 一般情况下重启服务器上nfs服务时,需把客户端上的挂载先卸载掉,以免进程后面杀不掉。当客户端服务器很多时,操作起来就比较麻烦。此时可以使用exportfs命令重新加载下。 ...

laoba ⋅ 44分钟前 ⋅ 0

基于Python的信用评分卡模型分析

信用风险计量体系包括主体评级模型和债项评级两部分。主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用“四张卡”来表示,分别是A卡、B卡、C卡和F卡;债项评级模型通常按照主...

火力全開 ⋅ 46分钟前 ⋅ 0

执行make命令时报错g++: Command not found

执行make命令时报错g++: Command not found 2016年10月24日 12:31:29 阅读数:4366 朋友安装node时遇到的问题 报错截图: 其实很简单只需要安装一下 yum -y install gcc automake autoconf l...

rootliu ⋅ 46分钟前 ⋅ 0

Loongnix(龙芯)系统,优盘安装指南

U盘安装分为两种方式:"usb disk" 及 "usb cd"。其中usb cd是将usb disk做为usb光驱使用。 usb disk安装步骤: 需要准备一个大小超过3.5G的U盘,格式化ext3格式 下载安装光盘镜像xxx.iso,将...

gugudu ⋅ 49分钟前 ⋅ 0

HTML5中meta属性的使用详解

meta属性在HTML中占据了很重要的位置。如:针对搜索引擎的SEO,文档的字符编码,设置刷新缓存等。虽然一些网页可能没有使用meta,但是作为正规军,我们还是有必要了解一些meta的属性,并且能...

guorongjin ⋅ 53分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部