App产品设计『技术篇』主流技术基础概念
这是《App产品设计指南》系列文章的第5篇内容,更多精彩可以点击下方链接查看。
在本文中我会介绍一些和客户端开发的技术知识点,大家有选择的学习一下即可。
产品经理要不要懂技术
这个问题困扰了无数产品经理,到目前也没有一个定论。我个人的看法是产品经理要懂得技术,适度就好;只要能做到和开发小哥哥正常的沟通就没有问题了。
懂技术的好处:
能和技术流畅地沟通,知道大致的实现原理。比如说技术说接口,Redis,时间戳不至于一脸懵逼;比如说app里面的活动详情适合用H5而不是原生,即便技术说H5效果不是很好也坚持用H5实现,因为H5只是效果和原生相比略差,但是如果用原生了出现问题必须发包才能解决问题,老板分分钟教你怎么做人。
懂技术的坏处:
过多的考虑实现方式和难易程度,纠结在和技术讨论沟通里面,而忽略了从产品本身的合理性,是否能解决用户场景这些地方深入思考。
不懂技术的好处:
跳出技术实现,更多地考虑体验、场景、流程这些东西,不懂技术就不需要过多地为技术考虑。因为怎么实现那是技术的事情,即便有难度,缺资源,那不应该是PM考虑的事情。只要需求是合理的,那么就应该被实现,而且多半会有比较成熟的解决方案。
不懂技术的坏处:
肯定是容易被骗,明明很简单的任务大笔一挥就随便报工时,或者还说实现不了。我就见过2个场景几乎一样的功能,直接报了4*2=8小时的例子=_=也见过一个简单的前端样式,和我说.net可以实现,PHP不能实现的例子。
平台对比
目前主流的手机操作系统有Google Android和苹果的iOS,其他系统因为份额比较小,这里就不做介绍了。下面挑选一些关键点将这两个系统进行对比。
内存机制
Android是真正的多任务系统,系统不会主动把后台程序结束,除非你手动结束一个任务。
iOS则是伪多任务,在内存不足的情况下,不会提示你就直接把后台程序结束了,保证当前的程序运行正常。原来的应用不占用cpu和内存,只保留退出时的界面状态。另外极少数系统级的应用可以后台运行,比如音乐播放。
所以在使用起来iOS才会让人感觉流畅许多。最新的安卓手机硬件配置不断提高,软件也在逐步优化,两者的差异在慢慢变小。
消息推送
Android系统的推送属于各自为政,每个应用独立的向客户端推送消息。一堆应用频繁地推送带来的只能是体验的降低。
iOS系统的推送则是全局的,这个服务依赖于苹果官方的支持。应用按照一定的规则给苹果服务器发送通知,官方再推送给客户端,由用户自行选择是否查看消息。
开发语言
Android的开发语言是Java,底层少量用到C/C++;iOS则是Objective-C,苹果新推出了基于脚本的编程语言 Swift。Swift 有类似 Python 的易用性,又有较强的运行效率,目前也有比较广泛的应用。
应用发布
Android的测试发布非常简单,生成APK文件后传送到设备上就可以安装。正式版的发布需要提交到不同的应用市场,一般审核都很快,大概几天的时间,用户就可以下载安装使用了,也可以在应用官方网站上下载使用。
iOS的测试发布相对复杂一点,以fir.im分发服务平台为例,需要进行相关配置,并添加移动设备的udid,用户使用苹果设备扫描二维码或者访问链接来下载测试应用。正式版应用需要提交到App Store,审核周期相对较长,用户只能在应用商店中下载安装应用。
主流开发方式
原生开发
使用原生系统内核开发,直接在系统上操作。它的优点是性能稳定,交互体验比较好,能访问本地资源(比如相机,通讯录等),操作速度快等;缺点是开发周期相对较长且需要应用商店审核,如果发现有问题需要重新发包才能解决,用户机器上可能会存在不同的版本。像抖音,饿了么这些APP中的大多数页面都属于原生开发。
H5开发
H5是HTML5的简称,不需要下载安装,有网络即可使用。它的优点是迭代速度快,开发成本低,能够跨多个平台和终端等;缺点是页面响应时间相对较长,且交互效果要比原生实现差一点,无法满足个性化场景。微信和浏览器中的页面都属于H5开发。
混合开发
混合开发是指出集合原生开发和H5开发两种模式,比如说平台常见的运营活动一般都是混合开发。原生模式定义好页面头部功能,H5实现页面的主体内容。
服务器
服务器可以指硬件,也可以指软件,我们这里是特指软件。Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
目前主流的Web服务器主要有Apache、Nginx、 IIS等。Tomcat、Tengine也是性能比较好的Web服务器。产品经理在自己电脑上部署服务器软件,把生成的html原型文件放到里面,其他人就能通过浏览器直接访问和使用。快速部署的话可以考虑直接使用phpstudy,一键部署php+mysql+apche环境。
数据库
数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。
数据库分为关系型数据库和非关系型数据库。其中关系型数据库更符合我们所熟知的逻辑世界(比如说用户信息包括头像,昵称,生日;文章信息包括标题和正文;某一个用户发表了一篇文章,这个概念很容易被理解),能够非常方便的使用和维护;但数据量一旦多起来,关系型数据库性能就会变差,效率不高。
非关系型数据库主要是基于“非关系模型”的数据库,非关系型数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。它的缺点是不提供SQL支持,没有事务处理。
目前主流的关系型数据库主要有MySQL、Oracle、SQL Server、PostgreSQL等;非关系型数据库主要有MongodDB、Redis、Hbase、Neo4j等。
缓存
缓存就是临时存储的文件,至于是把文字、图片还是视频放到缓存,需要根据业务来判断。缓存主要分为以下几个类型:
一级缓存,也叫做内存缓存速度是最快的,程序退出数据就消失,不能一直保留;
二级缓存,也叫做硬盘缓存,容量可以更大,速度要慢一些,程序下次启动时候,依然可以使用;
三级缓存,又叫做网络缓存,不优先加载,速度慢,浪费流量。
API
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
通俗来说就是其他人只要按照一定的参数就能调用你开发的功能而不需要关心具体细节。
一般接口包含以下几个内容:
1.接口地址
服务器上接口的地址,如下所示:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
2.请求方法
http请求方式有两种,一种是get方式,请求参数会用“?”作为分隔符跟在请求资源后面;另一种是post方式,请求参数放在了最后面的位置。简单地说,get一般用于获取/查询资源信息,而post一般用于更新资源信息。
3.请求参数
想要获得数据或者进行操作发给对方的参数,算是投石问路吧。
4.返回内容
返回内容一般会以json或是XML的形式返回,当然现在json格式相对使用的多点。
至于什么是json和XML,好学的同学肯定有办法知道的。
5.错误代码
错误时返回的信息,正常固然好,但是不可避免的会出现各种异常,错误代码就是告诉你这些的。
在写作过程中,如果有意见或者想法,欢迎有兴趣的读者添加我的微信一起交流探索,共同进步。