美文网首页
客户端技术笔记

客户端技术笔记

作者: 夜夛 | 来源:发表于2020-02-20 23:30 被阅读0次

    1.常用客户端技术介绍

    客户端是指普通用户使用的终端,用户通过客户端接触并使用产品。客户端通常是指PC与移动端。

    2.1 Android系统

    Android系统基于Lunx开发,谷歌推出的Android所有系统源代码开源。

    在应用开发层,使用Java语言进行应用开发。

    2.2 iOS系统

    iOS系统是基于UNIX的操作系统,在应用层使用苹果自家的开发语言Objective-C、Swift来进行iOS应用开发。

    iOS系统是闭源系统,不开放源代发。

    2.3 Web网页

    Web技术通常是指由HTML、CSS及一些动态交互技术(例如JavaScript等)组成的Web前端技术。

    Web网页的好处是跨平台,只有通过浏览器才能获取产品服务。Web网页不需要对特定的设计进行适配,通过响应式布局的方式可以对不同屏幕的尺寸进行动态适配。

    通过Web实现的好处是,易于改动、灵活变化,可以在不发布新版本的情况下实现内容更新。

    3.Android基础技术及基本控件

    Android使用Java为开发语言,使用Eclipse作为开发工具,谷歌也推出Android Studio,相对于Eclipse,使用Android Studio开发更方便,即可以一边编写界面代码,一边查看实际效果。

    Android对应用获取系统服务有权限控制,如果要使用系统自身服务,需要在开发阶段声明具体功能的使用权限。

    Android

    3.1.1 View

    View是视图的意思,表示在屏幕上展示的一个可视化控件,是Android所有控件的根。所有的Android控件都是基于View扩展的。

    在Android系统中,每一个界面元素都是一个View,在界面上表示这个View,需要注明View的长度与宽度、对应的位置,进一步还可以设置此View的背景颜色及基本形状。可以用View表示一条直线,也可以用View表示一个矩形。

    3.1.2 Button

    按钮控件,对按钮的形状和外观可以进行自定义设置,还可以设置按钮的点击事件,所谓点击事件就是当我们点击某个按钮时,这个按钮会触发什么操作。

    sp:与缩放无关的抽象像素(在正常大小设置下1sp=1dp、当字体大小是大或者超大时,1sp>1dp)

    3.1.3 TextView

    TextView代表文本展示框,同样需要制定长度与宽度,长宽实际上框定出文本范围,同时还需要制定文本内容的字体大小和颜色。

    在TextView中,可以设置文本是单行显示还是多行显示,可以设置字体类型。如果设置TextView的背景颜色,看到的就是一个带矩形边框的区域。

    3.1.4 EditText

    EditText是文本输入框,也就是产品中输入内容的控件,EditText与TextView的属性基本类似,区别就在于EditText可以进行内容输入,而且对输入的内容可以进行类型控制。(明文与密文、内容类型)

    EditText可以控制输入的长度,EditText有一个属性叫做“hint”,它可以用来在EditText中作为提示文本。

    通过定义EditText的背景属性,可以设置圆角矩形框、下划线表格式。在设计产品时,一般需要标注一个控制为输入框。

    3.1.5 ImageView

    ImageView是图片展示控件,对于图片来说,可以用ImageView作为图片载体来体现,可以ImageView设置背景颜色及阴影。

    3.1.6 ListView

    ListView在Android系统中是列表控件。

    例子:联系人会话列表、商品列表、联系人列表。都是通过ListView实现的。

    ListView示意图

    在实现ListView时,首先需要定义这个ListView的条目中控件的布局方式,在实现层面,只需要定义行条目的展示方式,然后往这个ListView中填充数据即可。

    在微信会话列表这个ListView中,条目中包含了展示头像的ImageView控件,展示名称、聊天内容缩略和更新时间的TextView。

    在Android系统中,ListView是一种容器型控件,可以在其中放弃他的控件,ListView的外观和其他控件一样,可以进行自定义控制,扩展性强。

    3.1.7 GirdView

    GridView控件与ListView类似,也是一种容器控件,区别在于ListView以列表的方式展示,GridView以表格的方式展示。如果需要实现多行多列的展示,就可以使用GridView。同样,也需要定义GridView中每一个单元格的布局方式。    

    GridView示意图

    3.2 Android界面布局原理

    线性布局:按照顺序,从上到下或从左到右的布局方式。

    margin:边距

    相对布局:指定控件与其他控件的相对位置,所谓相对位置就是以某一控件为参考基准,与其他控件的空间位置。

    3.3 Android系统的权限控制

    在Android系统中,应用访问用户隐私或者获取一些系统权限时候,需要取得用户的授权才可以使用。这些权限的设置是在开发阶段由开发人员标记在代码中的,需要使用哪个系统服务或权限就需要添加其功能权限。

    3.4 Android应用打包及发布

    Android应用开发完成后,需要打包成一个扩展名为“apk”(Androidpackage)的文件,这个文件是一个完整的Android应用安装文件。

    在开发完成后,需要通过开发工具将开发完成的代码及一些素材(例如图片、icon等)一起编译打包成一个APK文件。打包安装文件时,需要使用一个特殊的签名文件为这个安装包文件签名,签名的目的是保证这个应用安装包的唯一性与安全性。因为最终产品需要发布到各个应用商城,签名的意义就在于做唯一性区分并保证安装包的唯一性。

    打包完成后进行发布时,可以标记安装包的渠道来源,通过标记渠道来源,可以统计安装渠道,从而了解和统计各个应用市场该产品的下载次数。通过统计还可以检索出有问题的版本来自于哪个应用市场,这样就能更精准的定位问题。

    iOS

    4.1 UIButton

    在iOS系统中UIButton表示按钮控件。

    4.2 UILabel

    在iOS中使用UILable表示文本展示控件。与TextView属性类似。在屏幕上布局一个UILable需要指定控件所处的坐标轴位置。

    4.3 UITextField

    UITextField在iOS系统中是文本输入框控件。对应Android系统中的EditText文本输入框控件。

    与“hint”属性一样的叫做“placeholder”,表示文本提示信息。

    4.4 UIImageView

    在iOS系统中使用UIImageView作为图片展示的基础控件。

    4.5 UITableView

    UITableView表示列表型控件。

    与ListView的不同之处在于:UITableView的可扩展性较高,例如:执行微信中的左滑操作,出现删除和备注两个选项,这就是对UTableView的自定义扩展。和ListView类似,UITableView中的每一行叫作“cell”,可以对cell进行自定义布局。

    4.6 UICollectionView

    UICollectionView是iOS系统中进行表格展示的控件,和GridView类似,iPhone的系统相册就是使用UICollectionView实现的。瀑布流设计,也是使用的自定义UICollectionView。

    4.7 iOS界面布局原理

    iOS界面布局与Android不同,iOS使用的是绝对布局,也就是说,每一个控件在界面上是通过指定控件的绝对位置进行显示的。

    iO界面坐标轴

    iPhone屏幕物理分辨率是其逻辑像素的两倍。iOS界面坐标轴的长度与宽度是根据屏幕的逻辑像素表示。

    苹果在技术上也推出了类似Android布局方式的相对布局,通过响应式布局来调节界面控件的显示方式。

    4.8 iOS系统权限控制

    iOS系统权限在开发阶段不需要声明,而是在使用阶段由用户授权。

    4.9 iOS应用打包及发布

    iOS应用打包是通过苹果推出的开发工具Xcode。

    通过Xcode上传安装包至App Store后,需要等待苹果的审核人员对应用进行测试和审核,这个周期一般为一周左右,审核成功后则可以通过App Store下载应用。如果审核失败,修改后可重新提审,若遇到特殊情况需要加急审核,也可以填写申请加急审核的申请表,苹果审核人员会根据具体情况判断是否受理加急审核,若受理则审核周期可缩短至一到两天。

    另一种发布方式是发布内部测试版,这种方式是在指定的测试设备商安装应用包。这种方式是有限授权的方式,苹果会给具备开发资格的开发者账户授权,每个账户能开通有限的测试设备。

    要想提供给所有用户使用,必须发布至App Store,以应用安装包的方式安装是在则是设备上安装扩展名为“.ipa”的文件。

    苹果的开发者证书分为三种:

    (1)个人开发者:开发商署名为个人的开发者。

    (2)公司开发者:开发商署名为公司的开发者。申请公司开发者需要提供公司的相关证明材料。

    (3)企业开发者:企业开发者可以自行打包并发布应用,简单说,企业发布者可以自己开发并绕过AppStore提供App下载,但只能在有限的范围内。企业开发者类型往往是提供给企业内部作为内部App开发和下载使用。

    个人与公司类型的账户是99美金/年,企业类型的账户是299美金/年。

    Web

    5.1 Web基础技术知识

    每一个Web页都有一个唯一的地址,不同的地址组合在一起,通过链接相互跳转,最终形成一个网站系统。我们使用的各种网站,需要通过网站的域名进入,所谓域名就是每个网站的唯一性地址。

    Web页面也有自己的编程语言,我们通过HTML语言制作Web页面,通过CSS样式表对Web页面进行美化。H5页面就是一种通过Web技术实现的适配移动设备的产品形态。

    在移动端App中使用Web加载的方式打开Web页面,就可以将Web页面嵌入移动App中,实现二者的互相混合。这种方式对一些变化比较频繁的产品页面是一种较好的技术方案(修改Web页面的内容不需要重新发布一个新版本的App),但是如果要修改某个App的本地功能。就需要修改App的本地代码然后重新发布一个版本。使用Web的好处是能轻量化产品实现,而且能够动态灵活地调整产品内容。劣势就是Web页面的体验感和流畅度和原生的App实现还有一定的差距,所以频次高而且内容相对固定的,可以选择原生App。使用频次低而且内容变化比较快的通过Web实现。

    5.2 网站的骨骼和外衣HTML/CSS

    HTML全称超文本标记语言。超文本的意思是它能表现的内容不仅是文本,还可以是图片、链接、音乐等非文字元素,标记语言是对HTML特性的一种描述,HTML语言的语法结构是通过一个个的标签标记体现的。

    一个网站的结构往往包括“头”和“主体”,头部的内容使用标签<head></head>标记,第一个head标签是指标签的开头,第二个带斜线的标签标示标签结尾,头部的内容就放在头尾标签之间。

    头部主要存放一些网页信息,例如网页标题和网页描述等。主体部分用<body></body>表示,网页的内容全部放在body标签内。整个的网页内容都会放到一个顶层标签<html></html>中。

    <html>

    <head ></head>

    <body>

    </body>

    </html>

    示范

    CSS全程层叠样式表,是一种将网页内容与网页样式分离的技术,简单的说,CSS是给只有内容的HTML页面穿衣服,让HTML页面好看起来。

    5.3 URL/HTTP

    URL全称统一资源定位符,互联网上所有的资源都有一个唯一的URL地址,资源的类型可以是一个网页、一张图片、一首歌或一段视频。通过URL标记每一个资源,就可以通过浏览器很方便的访问到这些资源。

    打开浏览器时,地址栏中的地址其实就是一个完整的URL,随着访问页面的不同,地址栏里的URL也会随之变化,一个网站往往由很多资源构成,这些资源通过网站组合在一起。通过网站的主域名进入,就可以访问该网站下的所有资源。

    HTTP协议是互联网应用最广泛的一种网络协议,所有的WWW服务都必须遵守HTTP协议。HTTP是一个标准协议,设计之初是为了定义一个标准用来传递和接收HTML页面。在如今,HTTP是客户端与服务端通信的基本协议,使用客户端和服务端进行功能交互和信息传递都是基于HTTP协议。(HTTP协议是一种基于状态的协议,即协议本身可以对操作的状态进行标识)。例如:用户在做登录的操作时,基于HTTP协议向服务器发送登录请求,服务器接收到请求后处于待相应状态,处理完成后再基于HTTP请求将处理结果返回给客户端。

    HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

    HTTPS,在浏览器中使用网银或者跟支付相关的服务时,浏览器的地址协议通常是“https://”开头的,HTTPS是基于加密协议的传输协议,其加密方式就是OpenSSL组织研发的SSL加密方式。URL和HTTP为互联网里所有的资源定义了唯一定制并制定了传输协议,使得互联网服务能以统一的标准运转。

    浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

    应用程序一般有两种模式:B/S、C/S

    C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助谷歌,火狐等浏览器来运行。WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言,如java,python等编写出来的程序没有什么本质上的不同。

    5.4 Web APP和Native App

    移动App的实现有两种形态,一种是通过Web的方式实现,也就是在App内部通过加载Web网页的方式实现产品功能;另一种是Native或者叫原生的方式实现,这种方式是使用移动平台原生的空间开发而成。现在所有的产品都是使用Web和Native混合实现的方式,混合实现是指在一个原生App产品中嵌套一部分Web实现,这种App叫作 Hybrid App。

    5.5 Cookie和Session

    Cookie与Session,实际上都是一种会话存储技术,区别在于Cookie是将信息存储在本地,而Session是将信息存储在服务端。

    通过Cookie,可以实现广告推送的精准化等操作。Session存储信息不会随客户端的更换而丢失,将数据信息存储在服务端,存储的方式可以是文件也可以是数据库。

    5.6 如何判断产品问题是否出自客户端

    首先,根据客户端出现问题时,提示的异常信息判断。例如:提示网络异常和提示数据加载失败是两个完全不同的信号,网络异常有可能是用户当前设备所处的网络环境不佳。如果是数据加载失败,有可能是客户端在向服务端发送请求时,数据返回有误或者数据显示有误,问题可能出自服务端,也坑时服务端修改了数据字段导致客户端解析失败。列表中显示的数据有重复想,而且每次都能复现,这极有可能是服务端返回数据时返回了两个一样的。同时也有可能是客户端在解析数据加载显示时的问题,把一个数据展示了两次。即可以先向服务端工程师确定返回的数据是否正确,如果确定无误,那问题肯定就出现在客户端解析和展示数据的环节,直接与客户端工程师沟通解决问题。

    相关文章

      网友评论

          本文标题:客户端技术笔记

          本文链接:https://www.haomeiwen.com/subject/jxpnfhtx.html