美文网首页
开发人员常识

开发人员常识

作者: 雨声不吃鱼 | 来源:发表于2016-11-10 15:58 被阅读0次

FFMpeg 框架

实现程序中播放音视频的功能,通常是使用iOS SDK 中自带的播放器,如MPMoviePlayerController等,这些SDK中自带的API ,所支持的音视频格式都是固定的,如视频mov,mp4,音频aac 等格式,如果想要播放rmvb,avi等格式,是无法使用iOS SDK 中的API 来完成的,因为视频,音频都是经过编码的(因为原生的视频和音频数据都是非常大的,如音频中的无损格式,通常的音视频都是需要经过编码,编码可以认为是通过一定的规则来压缩数据),所以如果要播放rmvb的视频,必须要有对应的解码算法,而iOS SDK 中没有,就需要我们自己来解码,而编解码是一个极其复杂和需要很多音视频相关知识的技术,所以我们通常使用ffmpeg来帮我们完成,ffmpeg是使用c和c++写的,而且是跨平台的,所以要想使用,首先要进行编译ffmpeg源码,而这本身就是一个难点,所以网上有很多教程来展示如何在iOS平台上导入ffmpeg ,以及如何使用他来编解码。(大多数我们常见的播放器,如PPS,暴风影音,QQ影音等都是使用ffmpeg,或者修改后的ffmpeg)。所以一般在公司中这块技术相对来说比较难,而且专业性很强,有的时候甚至是专门的算法人员在做这部分的工作,所以95%甚至更高比例的iOS工程师都是不会的,但是作为iOS程序员要清楚,遇见音视频编解码方面的问题,应该使用什么技术来解决,这个是必须要知道的。(如果是iOS本身就支持的格式,就不需要这个了,支持这个格式,本身就意味着,SDK中的API 中自带的有对应格式的编解码器)

OpenGL 技术

底层、硬件加速的图形绘制。如3D,效率要求比较高的绘制工作,如图片滤镜、视频实时特效显示等。OpenGL 并不是一个框架,而是一个编程接口,我们平时编程中使用的UIImageView等用来显示界面的都是高级控件,很多绘制工作都是由系统帮我们完成,即使我们自定义画板,使用drawRect方法等,也还是系统封装过的绘制。OpenGL 是一套编程接口,可以直接调用硬件的某个功能,为什么称为硬件加速就是因为我们使用OpenGL来绘制图形,可以直接调用GPU来帮我们计算和处理,不耗费CPU的计算资源,所以速度更快,我们也可以掌控整个绘制过程,更底层。OpenGL当然不是iOS才特有的技术,因为他是一套规范,所以每个平台(iOS,Android,PC,Mac)都有他对应的实现,在iOS平台上,我们需要首先导入OpenGLES.framework 这个库才能使用,代码也都是C语言的代码。只有做特定的应用我们才需要用到OpenGL,如游戏,带滤镜的拍照应用,3D应用等。这块技术也基本上算是游离于iOS开发之外,一般需要专门的算法、多媒体开发人员负责。

Cocos2D

Cocos2D 是iOS下的一套开源框架,也可以称得上是iOS平台下的一个游戏开发引擎,是对OpenGL的封装,广泛用于iOS的游戏开发(主要是2D),代码接口是OC风格,所以即使你不懂底层的OpenGL,也可以使用Cocos2D来完成复杂的,高效的图形绘制,游戏开发工作。

Cocos2D-X

因为Cocos2D是iOS平台下的一个开源框架,就无法实现跨平台,所以就出现了Cocos2D-X,Cocos2D-X 底层通过C语言来编写OpenGL代码,提供的接口也是C和C++的接口,所以就实现了跨平台,可以把开发的游戏部署到iOS,Android等其它移动端平台。功能上和Cocos2D基本一致,只是使用不同的语言来实现。

Unity3D

Unity3D是一个跨平台的游戏开发引擎,使用的编程语言是C#和JavaScript,跟iOS开发没有任何关系,是独立的一个开发方向。

XMPP

XMPP一套及时通讯的协议,但并不像HTTP等协议一样,是全球通用的。在不同的平台有不同的实现,比如iOS平台,我们可以很容易的找到XMPP 的第三方框架,使我们非常方便的开发及时聊天的应用,
在Java平台下,也有对应的第三方框架。像QQ,微信,陌陌等即时聊天应用使用的就不是XMPP协议,他们是自己设计的通信协议,如果XMPP将来发展为世界标准协议,所有的聊天工具采用的都是这个通信协议,就可以实现QQ给陌陌发消息,各个聊天应用之间完全互通,就像现在的邮箱一样,无论哪家的邮箱产品,都可以互相发送邮件,正是因为他们采用的都是统一的邮件协议。

IAP

IAP是 In APP Purchase (应用程序内购买)的缩写,例如游戏内的道具购买,免费版升级为收费版,这个时候就需要用到IAP,简称为内购,这些功能不能使用第三方支付(主要是虚拟服务,像团购,充话费,购物这些属于实体消费,是需要成本的,这些可以不走IAP),IAP跟APP Store一样,苹果都是需要分成的,37分。IAP不仅需要编写代码,还需要在Itunes Connect 中设置。

HTTP Live Streaming

HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPhone、iPad)提供音视频直播和点播方案。HLS点播,基本上就是常见的分段HTTP点播,不同在于,它的分段非常小。也就是存放到服务器的视频文件,需要利用苹果公司提供的一个工具,把服务器上的视频分成一个一个小段,同时生成一个m3u8格式的索引文件,客户端访问视频的时候,URL的路径请求的是这个m3u8的文件,这样就能把这一段一段的视频连续播放。

SpriteKit

SpriteKit 是苹果公司在iOS7之后官方提供的一个游戏开发引擎,类似于Cocos2D,主要做游戏开发。

PhoneGap,AppCan

这是两个第三方框架,主要是利用网页技术来开发iOS应用,主要原理就是通过这两个框架来编写形态和交互都类似于手机APP的网页,程序内通过UIWebView来加载这些页面,这样做的好处是可以实现跨平台,因为无论Android,还是黑莓等平台都是支持网页的,只是iOS平台使用的是UIWebView,其他平台对应的类不叫做UIWebView而已。缺点就是交互速度和体验都不如我们通过每个平台自身的控件开发出来的程序体验好(主要还是速度上,和体验上)。

HTML5

HTML5实际上也是HTML,网页技术,5只是版本而已,在原来HTML的基础上增加了几个标签,所以本质上HTML5就是网页开发,现在利用HTML5来开发APP的很少,PhoneGap,AppCan实际上就是两个基于HTML5的框架。目前微信公众账号,朋友圈分享的一些网页,一些小游戏都是基于HTML5开发的,优点还是跨平台,缺点同样是体验不好,想想公众账号的体验,和原生客户端的体验,你就知道其中的差别了。

ReactiveCocoa

作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation)。但是这些事件都用不同的方式来处理,比如action、delegate、KVO、callback等。ReactiveCocoa为事件定义了一个标准接口,从而可以使用一些基本工具来更容易的连接、过滤和组合。通俗一点就是我们不需要再使用代理,通知等模式来处理类和类之间的交互,传递数据,可以通过ReactiveCocoa来方便的使用数据。目前用的也不多,了解即可。

POP

POP是Facebook开发的一套动画框架,导入这个框架,可以很方便的做一些动画效果。

FIR,蒲公英,Test Flight

这些都是第三方的测试平台,程序上架之前,我们某些时候需要把安装包发送给其他人(老板,客户等)来查看程序效果,而这些人都不懂怎么安装(确实比较麻烦,还需要他们提供设备号等,使用ITunes同步等),而有了这些平台之后,我们可以把安装包直接上传到这些网站(当然仍然需要提供设备号,打包的时候描述文件中仍然需要包含这台设备),客户可以很方便的通过访问这个网站,直接在网页中安装我们上传的安装包。

数据统计,Flurry,友盟

我们把程序发布出去被用户下载之后,需要了解用户的使用习惯,比如用户的设备是什么型号,每天使用多长时间,点击哪个按钮比较多,每个页面停留多长时间等一切我们想知道的用户行为,都可以通过这些框架来统计,原理就是比如我们点击一个按钮的时候,向服务器发送一个请求,说明这个按钮被点击了,让服务器记录一下,如果我们自己写这些请求,因为需要统计的东西众多,这部分代码也会耗费我们很长时间,有了这些框架,就方便很多,并且可以在他们的后台,看到这些统计数据,便于我们优化我们的程序,知道用户的喜好,来帮助我们改进程序。

广告平台:友盟Mob

现在很多程序都是通过广告来赚钱,如果自己来联系广告商,那将费时费力,而且可能自己也联系不到,所以有些公司就提供广告平台,任何程序都可以把广告集成到自己的APP中,当用户点击广告的时候,这些平台会给开发者分成,当然广告商给他们肯定要比他们给你的多,但是自己免去了找广告商,要账的麻烦事。

Xcode 插件

Xcode是可以安装插件的,为我们的开发提供辅助,比如【UIColor redColor】,装一个显示颜色的插件,该插件会在代码右侧把实际的颜色通过图片显示出来。

Instrument

苹果公司提供的一个监视程序执行过程的一个工具,可以查看内存占用情况,内存是否泄漏,每个方法执行的时间等,便于我们优化程序性能,调试bug等

ALAsset

我们在程序内打开相册时候,都是使用UIImagePickerController,但是如果我们想实现多选等更复杂的相册逻辑,需要使用ALAsset这个类。

沙盒文件共享

程序沙盒内的文件在某些时候用户需要拷贝出来,比如邮件程序内的附件,视频客户端下载的视频,这些文件拷贝出来通常通过两种方式
1.Wifi,当手机和电脑连到一个Wifi上的时候,我们可以通过代码把iPhone看成一个服务器,通过电脑端的浏览器,来访问某个地址,网页内列出来的就是沙盒内的文件,可以直接下载。
2.在程序内的plist配置文件中,设置Application supports iTunes file sharing 属性为YES,这样把手机插上电脑,可以在iTunes中查看这个程序沙盒内的文件。

iBeacon

苹果在iOS7之后提供的一个用于室内导航的技术,需要靠额外的硬件支持(GPS在室内信号很差,或者某些时候搜索不到)

相关文章

  • 开发人员常识

    FFMpeg 框架 实现程序中播放音视频的功能,通常是使用iOS SDK 中自带的播放器,如MPMoviePlay...

  • 常识的力量一书

    常识的力量,这本书。介绍投资所需的常识,公司竞争力的常识、公司估值的常识、投资策略的常识。 常识,明白什么可以做,...

  • 没带我真是作死!!

    去社保中心必须带U盘,常识常识常识

  • 开发人员必备工具书目录

    开发人员必备工具 开发人员必备工具之构建 开发人员必备工具之字节码操作 开发人员必备工具之代码分析 开发人员必备工...

  • 文化素养(记忆思维导图)

    传统文化 地理名胜 艺术成就 文学常识 历史常识 科技常识

  • 道德常识微论2018-09-04

    道德常识微论 或谓开学第一课,应该是公民常识课。认同,但应该明确一点,公民常识包括道德常识和政治常识。道德常识又是...

  • Windows下的Linux子系统使用

    1.设置开发人员模式设置 -> 更新和安全 -> 针对开发人员 -> 开发人员模式

  • Win10 无需安装虚拟机/双系统使用 linux

    第一步, 开启开发人员模式 设置 => 更新和安全 => 针对开发人员 => 选中开发人员模式开启开发人员模式 第...

  • 查理芒格,214演讲语录:

    所谓常识,是平常人没有的常识。我们在说某个人有常识的时候,我们其实是说,他具备平常人没有的常识。人们都以为具备常识...

  • 分享一些反常规的金句

    所谓常识,是因为普通人不具备常识。我们说某人有常识,其实是说他有常人所没有的常识。人们以为拥有常识很容易,其实非常...

网友评论

      本文标题:开发人员常识

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