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
閱讀下面的說明:
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:
爲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
運行Helios控制檯
你可以在Helios應用程序的運行環境中啓動一個IRB會話,使用控制命令:
- $ helios console
這個命令可以激活Helios應用程序配置的服務,包括任何生成的Core Data模型。啓動時自動包含rack模塊,允許你直接訪問一切:
- > Passbook::Passes.all # => [...]
部署到Heroku
- $ heroku create
- $ git push heroku master
集成一個iOS應用程序
Core Data同步
使用
AFIncrementalStore, 你可以直接將Helios應用程序集成到Core
Data棧中。無論它是一個獲取或者保存更改需求,或者是實現一個屬性,AFIncrementalStore能夠處理所有從服務器讀寫或者向服務器讀寫所需要的網絡連接。
推送通知註冊
使用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);
- }];
- }
轉換你的推送通知證書
一旦你的應用程序有蘋果授權的證書,將你的密鑰和這個授權證書作爲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
授權