發佈於:2014-05-08 09:37閱讀數:543php
Helios是一個開源框架,爲iOS應用程序提供基本的後端服務,可提供從數據同步、用戶帳戶到消息推送、IAP以及Passbook集成等服務。它使得開發者在短短几分鐘內就能夠得到而且運行一個客戶端node
「」ios
閱讀器git
Heliosgithub
Helios是一個開源框架,爲iOS應用程序提供基本的後端服務,可提供從數據同步、用戶帳戶到消息推送、IAP以及Passbook集成等服務。它使得開發者在短短几分鐘內就能夠得到而且運行一個客戶端-服務器應用程序以及必要的功能性無縫整合。web
Helios是專門爲「移動爲先」的開發而設計的,在設備上建立了偉大的功能,並實現了必需的服務器端組件。把你全部的精力投入到製做一個偉大的用戶體驗中,而不是因後端陷入困境。sql
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
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
mattt@heroku.com
受權
Helios基於MIT協議發佈。