那些年一起用過的iOS開發利器之Parse

程式苦行僧發表於2014-04-04

閱讀此文章需要對Objective-C和iOS有一定的瞭解,完全沒有基礎的朋友請先閱讀《讓不懂程式設計的人愛上iPhone開發》系列教程。

什麼是後臺服務(back-end service)?說白了,就是聯機服務。比如說一個備忘錄應用,如果所有的資料資訊只能儲存在本地裝置(也就是你所用的電腦、手機、平板電腦上),那麼它就是一個單機應用。如果一個遊戲只能在自己的裝置上玩,而且所有的遊戲進度、檔案都儲存在本地裝置上,那麼它就是一個單機遊戲。

因此,簡單來說,後臺服務的作用就是把單機應用變成網路應用,把單機遊戲變成網路遊戲。

現在如果說哪一個移動應用(非遊戲)沒有提供後臺服務的功能,幾乎就是不可想象的。不過之前為了提供所謂的後臺服務,你需要擁有自己的資料庫和web伺服器,這個很少是免費的。除非之外,你還需要藉助於類似Ruby on Rails,PHP或JAVA等程式語言來實現後臺服務。但這樣做有幾個問題:

  1. 大量時間的投入:

為移動應用提供後臺服務需要大量的開發時間和精力的投入。通常來說,開發後臺服務的時間和客戶端的時間幾乎是一樣的。

  1. 更高的技能要求:

即便你已經是iOS或Android客戶端開發高手,也不意味著你在後臺服務的開發上同樣NB。事實上,絕大多數程式猿都是專攻其中一項,能夠前端後端同時開火左右手互搏的牛人當然有,只是要耗費大量的時間沉澱才可能達到這一步。

  1. 使用者規模可擴充套件性的問題:

移動應用的天性決定,你永遠不知道你的應用只是小眾俱樂部成員,還是哪天成為百萬使用者俱樂部的一員。除非是後臺開發的高手,很難在開發應用時讓應用具有極好的可擴充套件性。

4.金錢的投入

即便是選擇最便宜的虛擬主機服務,你也得為此支付一定的費用。

正是因為有以上問題的存在,近年來出現了不少專門針對移動應用/遊戲的第三方後臺服務。

 

PART I 關於BAAS服務

隨著移動應用開發市場的火爆,已經有聰明人認識到了開發者的這一強烈需求,並提供高度可定製的網路後臺服務模組,方便開發者整合到自己的應用之中。有磚家給這種服務提供了一個新的名詞,美其名曰Backend as a Service(後臺服務),或者更NB的說法叫BaaS。 這些後臺服務提供商通常會提供一個整合的方案,其中包括了後臺資料庫儲存,以及其它 可定製化的服務。而在iOS和Android應用中整合這些服務並不難,只需要呼叫一兩個類庫就好。大多數此類服務可以提供免費賬號,當然也針對規模可擴充套件性問題提供了不同的付費賬號標準。

讓我們大概瞭解下BaaS提供商所提供的基本功能。 這樣吧,讓我們假想一個應用,比如我們要儲存屬於不同隊伍的運動員。這些BaaS提供 商能幫我們些什麼呢?
1. Custom objects(可定製的物件):通常來說,後臺服務的最重要功能就是可以將 應用資料儲存到網路伺服器的資料庫中。在你的應用中一般都有代表資料的model物件(比如一個運動員物件,以及一個球隊物件),以及物件間的關係(比如某個運動員屬於哪一隻球隊)。BaaS服務提供商通常會讓開發者用一種簡單的方式從物件中獲取資料, 並將其儲存/保持到網路伺服器的資料庫中。

2. File storage(檔案儲存):除了儲存資料庫型別的資料,有時開發者還需要儲存文 件-比如圖片,大型文件等等。在這款假想的應用中,或許你需要為每一個運動員儲存一張肖像照片。絕大多數的後臺服務都提供檔案儲存功能,方便開發者將檔案和某個定製對 象關聯在一起。

3. Geolocation:(地理位置資訊)在大多數的移動應用中,可能會需要根據某個特定的位置來查詢物件。例如,使用者可能想查詢自己手機附近的球隊。BaaS服務允許開發者將 自己的物件標記一個特定的地理位置,這樣使用者就可以根據地理位置來查詢物件。
4. Users(使用者):很顯然開發者需要對應用中的物件實行許可權管理,並指定使用者可以訪問的特定物件。幾乎所有的BaaS服務都允許開發者建立自己的使用者,而大多數使用者都 透過Facebook或Twitter來登入。這樣既可以擴大使用者基數,同時也無需讓使用者建立新的 賬戶。

5. Push notification(推送服務):BaaS服務允許開發者向自己的所有或選定使用者傳送 推送訊息。 好吧,這樣一來,你大概就清楚了BaaS服務提供商能幫到你些什麼。接著讓我們來大概 瞭解下幾個主要的BaaS服務提供商吧。

1. StackMob(StackMob)

可能是目前所有BaaS服務中最流行也是最具可定製性的服務了。開發者可以上傳自己的後端程式碼,建立自己的網路服務,這一點讓它在BaaS服務提供商中顯得鶴立雞群。

當然也有不爽的地方,如果你要儲存二進位制檔案(比如假想應用中的球員肖像圖片),還得需要一個Amazon S3賬戶。開發者無法直接在StackMob中維護管理二進位制檔案。他們的免費計劃也稍顯吝嗇,但付費服務計劃就顯得非常慷慨合理了,而且擴容方面很方便。

2. Appcelerator Cloud Service (Cloud | Titanium Mobile App Development ) 毫無疑問,該服務是所有BaaS服務中功能最完整的,而且免費計劃相當慷慨。不過它是設計來和Titanium SDK一起使用的,所有幫助文件稍顯晦澀。而如果開發者不是在使用 Titanium的話,會發現有很多看不懂的地方需要跳過。 當然,該網站也提供了很不錯的Q&A⻚頁面幫助開發者解決各類問題,而且對問題的響應 非常迅速。

3. Parse(Parse):

提供所有BaaS服務中最好的免費服務計劃。其幫助文件也是最容易理解的,所提供的服 務特別適合初學者,可以很短時間裡輕鬆上手(譯者推薦)。 Parse還提供了示例專案,以及可以在專案中新增的定製UIView檢視,比如Facebook和 Twitter登陸檢視。此外,它還提供了大量可用的第三方類庫。

4. Applicasa(Virtual Store Platform, Complete In-App Purchase & Backend Solution): 提供了和其它BaaS相似的功能,不過增加了一個拖曳功能,可以方便開發者建立自己的 表格和定製化物件。一旦資料庫結果設計完成,就可以下載定製的SDK。Applicasa的收 費基於你的活躍使用者數量。如果你是創業型團隊,那麼它會提供一個免費賬戶,允許每月 10萬人的活躍使用者。不過你得主動聯絡他們申請。

5. Kinvey(Backend as a Service): 同樣是一個很流行的BaaS服務。開發者在轉為付費賬戶前,該服務支援200個活躍使用者。不過它的付費價格還是比較高的。當然,大浪淘沙唯留真金,在很短的時間裡面Parse已經成為了最主流的BAAS服務提供 商之一,特別是被Facebook以8500萬美刀的價格收購之後(參考新聞http:// tech.sina.com.cn/i/2013-04-26/11458285564.shtml),Parse更是成為了BAAS服務的首 選。為了證明Parse可以為移動應用開發節約後臺相關的時間,Parse提供了一個仿 Instagram的應用,號稱在30分鐘內即可開發完成(36氪 | 關注網際網路創業139629.html)。

PART II Parse簡介

在上面的內容中我們已經瞭解到Parse也是BAAS服務的一種,那麼它有什麼樣的特點 呢? parse的最大特定是簡單易用,提供完美的文件支援,可以在極短的時間內上手。

1. Parse Data

類似網路資料庫的功能,可以在雲端儲存應用中的資料,無需配置自己的伺服器。 支援多種資料型別:

可儲存的資料型別包括基本資料型別,地理位置資訊,照片和查詢等等,可完全替代 MySQL和NoSQL資料庫。
雲端更新:
Parse Data具有云端更新功能,開發者可以透過這裡上傳應用中的新資原始檔,並立即 推送到應用中,而無需經過蘋果的第三方審查重新提交應用。

強大的資料管理功能: 支援視覺化操作,可以在無需編寫一行程式碼的情況下管理,查詢和更新伺服器資料。 Parse提供了Data browser資料瀏覽器,允許開發者在類似excel表格的介面中管理資料庫 中的資料。 當然,如果資料庫中的資料很多,parse還提供了強大的filtering篩選功能,透過設定篩選 條件(類似sql語句),可以迅速找到需要更新的資料。
在data browser中開發者還可以直接新增或刪除資料列,刪除所有資料,設定訪問許可權 等。 此外,如果開發者需要一些定製功能,還可以直接聯絡parse(Plans | Parsecontact_sales)。

2. Parse Push(推送服務)
使用Parse Push可以建立、預設定和分割推送訊息。parse的推送服務SDK簡單高效,可 以透過網⻚頁平臺,REST API或客戶端SDK來傳送推送訊息。
Parse Push的推送服務支援超大規模推送,無論你的應用有多少需求,都可以擴充套件滿 足。
視覺化的Push Composer:透過Parse dashboard裡面的Push Composer,可以很方便的 建立、預覽和傳送推送訊息到所有平臺(iOS,Android,win8)。其簡單程度和傳送郵件無 異。 開發者只需要在文字框中輸入相關資訊,設定要傳送的時間,格式(文字或JSON),並 選擇要推送的裝置型別(可全選),就可以立即在裝置上看到效果。 精準目標設定:Pro和企業使用者還可以設定特定的條件將訊息推送給特定使用者。

3. Parse Social

只需短短几行程式碼,就可以建立自己的賬號系統,或者和第三方社交網路繫結 (twitter,facebook)。parse social負責賬號繫結,密碼設定,資訊驗證和安全等最繁瑣 的事情。當然,類似微博微信這樣的天朝社交網路還是需要自行繫結的。

此外,parse social允許使用者在多個不同裝置上使用同一賬號來登入。 4. Parse Hosting-為網站所推出的特別服務

類似於雲端儲存的服務,利用支援Javascript SDK和Cloud Code來實現。 讓你的網站為他人所知,parse hosting可以保持靜態網⻚頁HTML,JavaScript,CSS,並通 過和Cloud Code互動建立動態⻚頁面,從而無需後臺伺服器。
如果升級到Parse Pro,還可以支援自定義域名。
Parse Hosting的價格如下:
(1)免費服務: 每月100萬次API請求,每超出1000次收費7美分,檔案儲存1GB免費空間,每超出1GB 收費20美分
(2)付費199美元服務: 每月1500萬次API請求,每超出1000次收費5美分,檔案儲存10GB,每超出1GB收費15 美分
(3)企業級服務:
可以聯絡對方確認。

可以看到,Parse Hosting 的服務價格從檔案儲存的角度來看並沒有太大優勢,對於重度 檔案儲存類應用需要考慮其它雲服務。此類使用者可以考慮StackMob +Amazon S3服務。

5.Cloud Code 支援iOS,Android或HTML5,

6.所支援平臺或服務:
iOS, OSX,ANDROID,Javascript,Windows Phone 8,Windows 8,.NET,RESTful API

parse的整體服務價格是基於API呼叫的:
1. 免費: 支援每月 100萬 次API呼叫, 支援每月 100萬次推送服務,峰值每秒20次

2. 付費:每月199美刀,支援每月1500萬次API呼叫,支援每月500萬次推送服務,峰

值每秒40次,提供30天的免費試用期

3. 企業級服務:可以單獨談。

PART III. Parse的iOS應用示例(使用Xcode4.6, iOS6.1)

該部分內容涉及到程式碼(示例程式碼參考了parse官方示例及raywenderlich網站中的相關教程),詳細內容參考連結中的pdf檔案:

http://vdisk.weibo.com/s/3Q0p9MS10TK

原文: http://zhuanlan.zhihu.com/kidscoding/19597061

----文章完----

最後,推薦一個神器

內測寶

個人覺得比TestFlight更簡單好用,開發者只需要簡單把打好的ipa包上傳上去,生成二維碼,測試人員在手機上掃碼二維碼,就可以直接安裝最新的測試版本了,好用的讓人想哭。

相關文章