阅读此文章需要对Objective-C和iOS有一定的了解,完全没有基础的朋友请先阅读《让不懂编程的人爱上iPhone开发》系列教程。
什么是后台服务(back-end service)?说白了,就是联机服务。比如说一个备忘录应用,如果所有的数据信息只能保存在本地设备(也就是你所用的电脑、手机、平板电脑上),那么它就是一个单机应用。如果一个游戏只能在自己的设备上玩,而且所有的游戏进度、档案都保存在本地设备上,那么它就是一个单机游戏。
因此,简单来说,后台服务的作用就是把单机应用变成网络应用,把单机游戏变成网络游戏。
现在如果说哪一个移动应用(非游戏)没有提供后台服务的功能,几乎就是不可想象的。不过之前为了提供所谓的后台服务,你需要拥有自己的数据库和web服务器,这个很少是免费的。除非之外,你还需要借助于类似Ruby on Rails,PHP或JAVA等编程语言来实现后台服务。但这样做有几个问题:
- 大量时间的投入:
为移动应用提供后台服务需要大量的开发时间和精力的投入。通常来说,开发后台服务的时间和客户端的时间几乎是一样的。
- 更高的技能要求:
即便你已经是iOS或Android客户端开发高手,也不意味着你在后台服务的开发上同样NB。事实上,绝大多数程序猿都是专攻其中一项,能够前端后端同时开火左右手互搏的牛人当然有,只是要耗费大量的时间沉淀才可能达到这一步。
- 用户规模可扩展性的问题:
移动应用的天性决定,你永远不知道你的应用只是小众俱乐部成员,还是哪天成为百万用户俱乐部的一员。除非是后台开发的高手,很难在开发应用时让应用具有极好的可扩展性。
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包上传上去,生成二维码,测试人员在手机上扫码二维码,就可以直接安装最新的测试版本了,好用的让人想哭。