时间:2020-02-23 来源:互联网 浏览量:
单纯开发是不用付费的,使用模拟器就可以。如果要真机调试,或者提交appstore,需要申请开发者帐号。
需要提交:1、注册一个苹果账号作为开发者账号。2、个人或企业的姓名、地址、联系方式等相应资料。3、能够做美金结算的信用卡账。4、支付99美金给苹果公司。
另外,申请企业账号需要提供DUNS(邓白氏编码)以及税务等相应资料。D-U-N-S Number 是一组唯一的九位数字,用于检查所在组织的身份和法人实体状态。如果未拥有此识别码,需要将信息提交给 Dun & Bradstreet,以获取一个免费的 D-U-N-S Number。
Apple 开发者到期 App 是会下架,但是已经安装 App 的用户,手机仍能使用App,App Store里面搜索不到。续费 Apple 开发者后,App 会在当天上线App Store。Apple开发者到期时不能转让App。
开发工具:苹果应用开发需要使用mac系统下的Xcode,使用Objective-C和Swift语言。Xcode由苹果公司开发的集成开发环境,免费对用户使用,可以开发iOS、macOS、watchOS、tvOS四个系统应用。
二、上线应用开发完成后,如要发布上架App store,大致经过以下8个步骤。
1. 登录Apple开发者中心网站,选择certificates,Identifiers and profiles,在APP IDs选项里注册一个APP ID,用于标识一个或一组APP,需要填写APP的描述和需要注册的服务功能。
2.创建开发证书,证书分为iOS Development(开发证书)和iOS Distribution(发布证书),开发证书用于真机调试,有一年使用期限。发布证书用于APP的发布。
3.配置iOS Provisoning Profiles(debug)描述文件,Provisoning Profiles是苹果签名认证的Plist文件,列举了开发证书、APP ID、以及授权运行设备的UDID(为一个设备的唯一标识)。
4.在Xcode中进行应用证书注册并打包APP。在工程里将Provisoning Profiles配置导入,完成后就可以打包APP了,导出APP包。
5.真机调试。可以在授权的设备上进行真机调试,将打包导出的APP包安装于设备上,安装时系统会对开发证书进行认证,成功后app会安装在设备上,可以在设备上对app进行测试。
6.真机测试没问题后,可以对APP进行上架发布。这里需要进入开发者中心创建发布证书,并配置Provisoning Profiles 描述文件。
7.需要在itunes connect 上创建本应用的项目。在开发者中心的itunes connect管理界面创建一个新APP项目,填写APP的相关信息包括描述、销售范围、版本信息、关键词等。
8.提交审核。需要提供一个测试账号用于审核人员进行测试。应用提交之后审核人员对应用进行审核。审核针对安全、性能、业务、设计、法律五个层面。
安全:不包含不良内容,不造成人身安全隐患、数据安全、不得在指定容器范围外读写数据、不具有特殊权限
性能:APP完成度、硬件兼容性、能耗、占用系统资源量、网络性能
业务:付款、广告合乎标准
设计:不涉抄袭、有价值、
法律:隐私、知识产权
苹果官方要求,开发和上线应用必须通过Xcode这一集成开发工具,也就是只能在mac电脑下完成。但如果想在windows环境下完成开发,也可以通过一些其它途径。借助LBuilder、HBuilder、APICLoud、APPCan等工具,可以把网站打包成APP,之后通过上架辅助软件Appuploader进行windows下APP的上架。Appuploader是ios上架辅助工具,可以直接得到.p12和.mobileprovision证书文件,上传ipa到App store,打破了上架ios只能在苹果电脑用Xcode的限制,使用费用100元/年。
三、安装在 iOS 出来之前,在主流操作系统(Mac/Windows/Linux)上开发和运行软件是不需要签名的,软件随便从哪里下载都能运行,导致平台对第三方软件难以控制,盗版流行。苹果希望解决这样的问题,在 iOS 平台对第三方 APP 有绝对的控制权,一定要保证每一个安装到 iOS 上的 APP 都是经过苹果官方允许的,怎样保证呢?就是通过签名机制。
ios 正规的应用安装方式分为三种:
1.通过APP store安装
对于通过APP store安装的应用,iOS为了确保所有的应用程序没有被修改,要求必须使用苹果颁发的证书对可执行代码进行签名。开发者使用苹果颁发的发布证书签名后,将应用题叫道APPstore审核,审核成功后,苹果使用其私钥对程序进行签名。用户从APPstore下载安装应用,iOS调用系统进程获取provisioning profile文件,对应用程序进行证书校验。
2.开发 App 时直接把开发中的应用安装进手机进行调试,即在上线时的真机调试
开发时安装APP,它有两个需求,1)安装包不需要传到苹果服务器,可以直接安装到手机上。2)苹果必须对这里的安装有控制权,包括a.经过苹果允许才可以这样安装。b.不能被滥用导致非开发app也能被安装。苹果使用双层签名的机制,
1)在你 Mac 开发机器生成一对公私钥,这里称为公钥L,私钥L。
2)苹果自己有固定的一对公私钥,跟上面 AppStore 例子一样,私钥在苹果后台,公钥在每个 iOS 设备上。这里称为公钥A,私钥A。
3)把公钥 L 传到苹果后台,用苹果后台里的私钥 A 去签名公钥 L。得到一份数据包含了公钥 L 以及其签名,把这份数据称为证书。
4)在苹果后台申请 AppID,配置好设备 ID 列表和 APP 可使用的权限,再加上第③步的证书,组成的数据用私钥 A 签名,把数据和签名一起组成一个 Provisioning Profile 文件,下载到本地 Mac 开发机。
5)在开发时,编译完一个 APP 后,用本地的私钥 L 对这个 APP 进行签名,同时把第④步得到的 Provisioning Profile 文件打包进 APP 里,文件名为embedded.mobileprovision,把 APP 安装到手机上。
6)在安装时,iOS 系统取得证书,通过系统内置的公钥 A,去验证embedded.mobileprovision的数字签名是否正确,里面的证书签名也会再验一遍。
7)确保了embedded.mobileprovision里的数据都是苹果授权以后,就可以取出里面的数据,做各种验证,包括用公钥 L 验证APP签名,验证设备 ID 是否在 ID 列表上,AppID 是否对应得上,权限开关是否跟 APP 里的 Entitlements 对应等。
3.企业内部分发,可以直接安装企业证书签名后的 APP
企业内部应用,即只在企业部门和员工内部使用、不对外公开的应用。苹果提供了专门的In-House证书用来发布这种应用,可以分发给任意的手机,只要通过一个URL即可下载安装,不用上传到App Store审核。In-House应用,有时需要根据部门需求进行版本的快速迭代,因为不需要App Store审核,所以可以做到随时修改,随时发布,节省了大量的时间。
在打包安装时同样需要创建证书,证书类型为In-House型,之后创建配置文件(Distribution Provisioning Profiles),过程和其他证书创建过程类似。在Xcode中导入配置文件,打包程序,可以导出ipa和plist文件。Plist文件中包含ipa的URL、安装时显示的 icon 的url、bundle id、版本号、安装前的提示信息。将plist文件上传至服务器,企业员工在safari浏览器中输入链接即可安装。Safari操作的具体流程是:
1)Safari解析输入的字符串,找到plist文件
2)根据plist文件里面提供的信息下载并安装ipa包,还会访问大小图标,大小图标在ipa包正在下载时显示,当下载完毕后显示程序自带的图标
3)下载安装后,如果想打开程序还需要在手机 设置->通用->描述文件与设备管理,在“企业级应用”分组下,点击 信任 开发者的证书里面选择相应的证书信任后,方可打开程序。
综上,3种安装方式归根结底,都是通过验证安装程序的provisioning profile文件。安装应用程序时,Provisioning Profile 文件被拷贝到 iOS 设备中,运行该 iOS App 的设备通过它来认证安装的程序。Provisioning Profile 把AppID、签名证书、设备授权这些信息全部打包在一起,方便我们在调试和发布程序打包时使用。这样,只要在不同的情况下选择不同的 Provisioning Profile 文件就可以了。
除了在正规途径下安装应用以外,通过“打破”原有权限,获取更高权限,可以实现脱离官方平台,自由安装第三方的应用,即我们口中的“越狱”。
iOS系统具有封闭性,通过代码签名机制限制未经签名的代码在iOS系统中执行。用户不能访问系统资源,也无权修改,只能使用苹果颁发证书的正规途径的应用或程序接口完成系统允许的操作。越狱后,用户可以获得权限访问与修改系统文件,继而获得更多的权限,完成之前未被iOS允许的功能。越狱的原理是通过漏洞。至少需要2个漏洞,第一个漏洞用来完成专有代码执行,第二个漏洞用来使内核的安全措施失效,提升权限。
越狱之后安装应用可不通过APP store,有一些越狱者制作的类似APP store的应用安装商店,APP store默认安装位置为/var/mobile/Applications目录里,越狱后可安装在根目录下,所以墙纸、主题、铃声等一些个性化应用在越狱后可以得到安装。
四、使用iOS 程序 5 种状态:
1. Not running:
应用还没有启动,或者应用正在运行但是途中被系统停止
2.Inactive:
当前应用正在前台运行,但是并不接收事件(当前或许正在执行其它代码)。一般每当应用要从一个状态切换到另一个不同的状态时,中途过渡会短暂停留在此状态。唯一在此状态停留时间比较长的情况是:当用户锁屏时,或者系统提示用户去响应某些(诸如电话来电、有未读短信等)事件的时候。
3.Active:
当前应用正在前台运行,并且接收事件。这是应用正在前台运行时所处的正常状态。
4.Background:
应用处在后台,并且还在执行代码。大多数将 要进入Suspended状态的应用,会先短暂进入此状态。然而,对于请求需要额外的执行时间的应用,会在此状态保持更长一段时间。另外,如果一个应用要求启动时直接进入后台运行,这样的应用会直接从Notrunning状态进入Background状态,中途不会经过Inactive状态。比如没有界面的应用。注此处并不特指没有界面的应用,其实也可以是有界面的应用,只是如果要直接进入background状态的话,该应用界面不会被显示。
5.Suspended:
应用处在后台,并且已停止执行代码。系统自动的将应用移入此状态,且在此举之前不会对应用做任何通知。当处在此状态时,应用依然驻留内存但不执行任何程序代码。当系统发生低内存告警时,系统将会将处 于Suspended状态的应用清除出内存以为正在前台运行的应用提供足够的内存。
应用启动过程:1、执行main函数
2、在此方法中调用UIApplicationMain
2.1 创建UIApplication对象(UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。一个iOS程序启动后创建的第一个对象就是UIApplication对象,且只有一个。利用UIApplication对象,能进行一些应用级别的操作。)
2.2 创建UIApplication的delegate对象。(UIApplication Delegate的作用是当应用程序发出一系列系统事件如来电或锁屏等,做出相应的反应。新建完项目,都有个带有“AppDelegate”字眼的类,它就是UIApplication的代理,AppDelegate默认已经遵守了UIApplicationDelegate协议,已经是UIApplication的代理。系统事件如程序降将要启动、程序启动完成、程序进入后台、程序进入前台、程序退出等。)
2.3 开启消息循环
3、delegate对象开始监听系统事件
3.1 app启动完成后会调用delegate对象的程序加载完成的方法
3.2 如果app的plist设置了main storyboard 会创建UIWindow对象(如 果没有设置则不创建)
3.3 创建main storyboard中绑定的controller对象(stroyboard中箭 头指向的控制器)
3.4 设置给window对象的rootViewController
3.5 设置window对象可见
屏幕响应顺序iOS和安卓系统具有不同的屏幕响应顺序,IOS对屏幕的响应顺序是:触摸→媒体→服务→架构,而安卓是:程序→框架→屏幕显示资源→架构。所以在视觉效果上,iOS会有更流畅的感觉。
后台管理机制从iOS 3开始,苹 果为iPhone引进了push notification,不启动应用也 能收到推送消息,原理是 消息由APNS(Apple Push Notification Service, Apple Push服务器)统一管 理,随着iOS 4的发布,iOS也开始有了 多任务功能,当你点击H o m e键后,当前 程序转入后台(iOS 4之前按Home键就 直接干掉应用了),后台应用以墓碑的形 式(退出前的状态)保存在内存中,用户 可以快速恢复。但是苹果对后台的限制非 常严格,只有一些特殊应用可以在后台 真正运行,比如音频播放类、VoIP类、 newsstand、位置服务等。
如果不做任何配置的话,你的应用最 多只能在后台运行5秒,之后就会被挂起 (存于内存但不运行),如果你配置了后 台运行(如需下载),大概在594秒(9.9 分钟)时进程停止,程序同样也会被挂 起,一旦系统需要内存了,最早的后台进 程就会被杀掉以释放内存。
从 iOS 7 开始, 一旦手机锁屏, 后台应用将会很快被暂停, 之后当系统被唤醒时,那些暂停的后台应用会一起继续运行。现在的iOS后台管理很智能, 他会记忆你每天什么时段打开什么应用, 经过一段时间后, 他会在适当时间唤醒相应的应用。iOS7新增三种后台模式:
Baxkground Fetch 后台应用刷新iOS 7 之前的应用必须在打开时才能联网获取数据, 而它可以让应用在后台直接获取数据。
Silent Remote Notifications 静默推送唤醒iOS 7 之前当收到消息后, 只有打开应用才能从APNS获取推送的具体消息, 现在在收到消息后, 会自动唤醒相应的APP , 让该APP在后台获取消息, 再通知用户。
Background Transfer Servce 后台传输以前一旦下载被转移到后台最多只能持续运行549秒(9.9分钟), 现在所有的下载任务会交给系统独立的进程去完成, 不管APP在前台、挂起还是被杀掉, 下载都在继续进行。
自动清理机制iOS系统在安装应用或者使用过程中存储空间不足时,会自动清理一些应用的缓存以释放空间。
APP 更新推送
当app有新版本时,可以在APP store里更新应用。APP在安装的时候,会在数据库里appid对应的列表下新增版本号的关键字。用户在【更新】界面刷新操作后,发送请求查询用户表,并关联APP信息表获取到用户安装过的每一款APP的最新版本号列表。然后把最新版本号列表中的app版本号,与本地的app版本进行比对,如果最新版本号列表中的版本号大于本地版本号,则会有更新提示。
五、卸载iOS 文件目录结构:
/:为根目录
Applications: 存放所有的系统 APP 和来自 Cydia 的 APP,不包括从 App Store 下载的APP
Developer: 供开发者使用
Library:系统资源,用户设置
System:系统的重要组成部分
User:用户目录,实际指向 /var/mobile
bin:存放用户级可执行文件,如 ls、mv 等
dev:设备文件
etc:存放系统脚本、hosts 配置、SSH 配置文件等
sbin:存放系统二进制文件
usr:用户工具和程序
var:变量文件,在正常运行的系统中其内容不断变化的文件
应用都是安装在/var/mobile/Applications目录下,且应用沙盒机制,每一个应用分配自身的存储空间,不能越界访问。应用程序沙盒目录下有三个文件夹Documents、Library(下面有Caches和Preferences目录)、tmp。Documents:保存应用运行时生成的需要持久化的数据iTunes会自动备份该目录。Library/Caches:一般存储的是缓存文件,例如图片视频等,此目录下的文件不会再应用程序退出时删除,在手机备份的时候,iTunes不会备份该目录。Library/Preferences:保存应用程序的所有偏好设置iOS的Settings(设置),iTunes会自动备份该文件目录下的内容。tmp:临时文件目录,在程序重新运行的时候,和开机的时候,会清空tmp文件夹。
iOS 中 app 对本地存储只能访问到自己的根目录,再往上就没有权限了。在删除应用时,app自身的存储空间的根目录会直接删除,在机制内不会留下残留文件。
Mac OSMac OS是基于Unix内核的图形化操作系统;由苹果自行开发,不对外销售,一般情况下在普通PC上无法安装,只安装于苹果的设备中。mac OS虽然也对应用有较严格的管理机制,但与手机端iOS系统相比,用户具有更多的权限。
一、开发mac OS应用的开发过程与iOS的开发类似,需要付费注册开发者账号,同样使用Xcode作为开发工具。
二、发布应用开发完成后,发布方式与iOS下有所不同。除了在app store线上发布,还可以在平台以外发布。mac开发下的证书有5种:
开发证书:
(1)Mac Development:用于开发和测试的证书,跟iOS development证书一样;运行在指定设备上需要把设备的UUID添加到devices里面去。
发布证书:
Mac App Store
(2)Mac App Distribution:这个用于 Xcode 自己把.app 文件上传到 Mac App Store,具体的上线过程与iOS应用类似。
(3)Mac Installer Distribution:这是用于开发者自己把.app 文件打包成 .pkg 文件,再用 Xcode 自带的 App Application Loader 上传到 Mac App Store ,可用于上传到store前模拟真实的store环境。
Developer ID
(4)Developer ID Application:这个用于开发者使用开发者帐号签名,导出一个线下发布版本的 .app 文件,但是由于脱离了苹果的 Mac App Store,还是加上许可协议打包成 .pkg 文件再发布比较好,给用户一个决定是否安装的机会。这就要用到第5个证书。
(5)Developer ID Installer:用于开发者打包,同时加上开发者帐号签名,打包生成一个.pkg的安装包,可以装到任意一台Mac电脑上执行安装过程。
5种证书,开发证书用于开发和测试,发布证书就对应着app store和线下两种发布形式。根据需要的发布形式创建对应的证书,证书的创建过程可参考iOS应用的证书创建,发布的具体过程可以按照官方文档和Xcode的提示一步步来。当然如果不想用证书也不担心用户拒绝来源不明的应用的话,也可以不用任何证书签名打包应用,用默认的签名方式就可以。
三、安装mac OS上对于应用的不同发布形式,也有不同的安装方法,可以分为三种。
1.对于app store上的应用,即上一部分的(2)(3)发布方式,用户可以直接登录自己的苹果账户,进行购买或者获取资源下载,对软件的购买在平台完成,苹果会抽取一部分分成。app store上的应用经过苹果内部人员的审核和测试,本身会具有更高的完整度、质量和运行稳定性。但是国内应用的很多软件app store都没有,需要线下的方式进行安装。
2.第二种安装方式是线下的.app格式的应用的安装,即上一部分的(4)发布方式。这种用户可以自行从网上搜索下载源,一般下下来的安装文件是一个.dmg格式的磁盘映像,dmg 是苹果的压缩镜像文件,类似于 Windows 下的 ISO,双击打开后会给系统挂上一个类似移动硬盘的虚拟磁盘,安装完后可以右键弹出。它是 macOS 应用软件通用的打包格式,里面一般包含“应用程序名.app”的图标和一个应用程序文件夹(/Applications)快捷方式。直接将图标拖曳至应用程序文件夹,即可完成安装,非常快捷。
3.第三种是.pkg安装包的安装,即上一部分的(5)发布方式。.pkg属于系统级软件的安装程序,类似于windows中的.exe安装程序,会阅读许可协议并选择安装位置、安装内容,一般会修改系统配置,权限较高,需要sudo授权。
对于一些来源不明或没有证书的应用,在打开安装程序时有时会出现“文件已损坏,打不开”。这是由于系统的安全机制对来源不明的软件的限制。可以通过在命令行里修改权限,在系统偏好设置的安全性与隐私设置里,改成允许任何来源的应用。
有时还会提示“来自身份不明的开发者”,这时同样在偏好设置的安全性与隐私设置里,可以看到要打开的应用被阻止的提示,点击“仍要打开”即可。
苹果的应用为.app的格式,既是一个包,包含应用的全部内容,可以右键显示包内容,对里面的文件或配置进行修改(具有比iOS更高的权限),同时也是一个可执行文件,安装在Applications文件夹后会自动出现在系统的Launchpad(启动台)里。
四、卸载mac上对于应用的卸载,由于安装方式不同,卸载方式也不同。app store里安装的应用,类似于iOS,在Launchpad(启动台)里长按图标,点叉号即可卸载。线下的app store平台外自己安装的应用极少数会自带卸载程序,多数直接在Applications文件夹里右键删除即可。只是对于.pkg安装包安装的应用,由于有时具有较高权限,可能会修改系统配置,所以删除应用后有时可能会有卸载残留,可以通过第三方卸载软件或手动删除。
watchOSwatchOS是苹果公司基于iOS 系统开发的一套使用于Apple watch的手表操作系统。它的应用的开发与上线与iOS相同,用户只能通过App store来安装应用。在2019年6月之前,对应用程序的安装不能在apple watch上直接进行,只能结合iphone使用。连接之后在iPhone上打开Apple Watch应用程序,来安装需要的表上应用。安装完成后,会首先在iPhone上面显示。需要说明的是,Apple Watch APP应用程序都是必须要配合iPhone使用的,因此所有安装到Apple Watch上面的应用程序,都会同时安装到iPhone上。2019年6月之后发布的新的watchOS系统,自带app store,不用再连接iphone来安装应用,可以直接在app store里获取安装。
卸载应用也是两种方式,既可以在apple watch内直接卸载,也可以与iPhone配对,通过iPhone里的apple watch应用来管理手表应用。
tvOStvOS是苹果公司专门为Apple TV设计的操作系统,基于 iOS。2016年3月发布了 tvOS 9.2 操作系统。Apple TV是苹果公司推出的一款高清电视机顶盒产品,用户可以通过Apple TV在线收看电视节目,也可以通过Airplay功能,将iPad、iPhone、iPod和PC中的照片、视频和音乐传输到电视上进行播放。tvOS也可以安装一些应用,具有独立的应用生态,通过自带的app store进行搜索和安装。
tvOS应用的开发与发布也与iOS类似,需要注册成为开发者,使用官方的开发工具xcode进行开发,开发与发布同样需要创建证书。具体过程均与iOS相同。
在国内目前用户不多,不能直接收看国内的有线卫视节目,需要联网安装app来收看电视台。
苹果系统与其他系统比较iOS与macOS对比两个系统都是苹果自主研发的系统,但我们也可以看出,macOS的用户比起iOS拥有更广的权限,可以访问系统资源,读写系统目录、系统文件,也可以访问应用内部目录,对其配置文件进行修改,还可以下载安装来自任何来源的应用。相比之下,iOS的系统生态就更加封闭,使用者无法查看系统文件资源,也不能访问应用内部,只能通过应用的接口来使用和管理应用。而对于广大苹果手机用户而言,他们所使用的唯一的应用安装方式就是通过官方的APP store。
iOS系统应用与安卓对比具有安装来源不同、用户权限不同、运行机制不同、后台机制不同、响应处理指令权限不同几大区别。相比之下优点:1)所有上线应用经过审核,具有更高的稳定性、流畅度、安全指数、优化性,且可以保护版权,安卓应用开发者随意开发,参差不齐。2)应用具有较低的权限,可以更好的保护用户隐私,相比之下,安卓许多应用如不开放权限则不让用户使用。3)通过优先响应屏幕和独特的对内存管理的方式使其具有更流畅的运行效果。4)iOS软硬件垂直整合,只运行在苹果设备上,安卓可以运行在多种设备上,所以iOS上的应用有更好的兼容性。
缺点:1)安卓系统开放,且开发门槛低,所以资源多,开发者多,创新也多。2)安卓系统用户权限大,所以操作更灵活,也更加个性化。
windows与macOS应用对比开发门槛不同:mac应用开发成本大,windows程序任意开发者均可以免费开发。
安装来源不同:windows可以随意安装程序,mac的可以通过app平台或平台之外,均会验证证书,质量更高。
安装方法不同:windows安装包进行安装,mac可以应用商店直接获取,或者直接复制app到应用程序,或者安装包安装。
应用文件结构不同,windows除了安装根目录,还会写入注册表信息,通过exe执行文件启动。mac的app文件既是整个应用包,同时是启动入口。
卸载方式不同:windows通过卸载程序,mac直接删除。
苹果系统中的安全机制Apple ID双重认证首次登录一台新设备时,除输入密码外,还需要在信任设备上的授权才可以登录。输入验证码后,即确认信任这台新设备。由于只输入密码不再能够访问帐户,因此双重认证显著增强了 Apple ID 以及所有通过 Apple 储存的个人信息的安全性。登录成功后,系统将不会再次要求信任设备的验证,除非完全退出登录帐户、抹掉设备数据或出于安全原因而需要更改密码。受信任设备是已使用双重认证登录的设备,可以是装有 iOS 9 及更高版本的 iPhone、iPad 或 iPod touch 或者装有 OS X El Capitan 及更高版本的 Mac。受信任电话号码是指可通过短信或自动语音电话接收验证码的号码。您必须至少验证一个受信任电话号码才能注册双重认证。
代码签名苹果也是通过代码签名来保证每一个安装到iOS上的APP都是经过苹果官方允许的,防止盗版软件、病毒入侵、静默安装等。苹果也是通过代码签名来保证每一个安装到iOS上的APP都是经过苹果官方允许的,防止盗版软件、病毒入侵、静默安装等。
可信引导iOS设备开机后采用一种称为可信引导的方式进入系统。引导过程中,安全只读内存 (SecureROM) 是首先被引导的部分,其中嵌入了根证书 (Root Certificate)用以检查下一步所加载组件的RSA签名。 在随后的每个步骤中,系统校验下一步骤所要加载组件的 RSA 签名。这一信任链 (Chain of Trust) 保证了系统启动过 程中的所有组件没有被破坏和修改。
沙盒机制沙盒也叫沙箱,英文standbox,其原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。在沙盒机制下,每个应用程序都有自己的存储空间,程序之间的文件夹不能互相访问。iOS系统为了保证系统安全,采用了这种机制。iOS 应用程序在安装时,会创建属于自己的沙盒文件,应用程序不能直接访问其他应用程序的沙盒文件,当应用程序需要向外部请求或接收数据时,都需要经过权限认证,否则,无法获取到数据。应用程序中所有的非代码文件都保存在沙盒中,比如图片、声音、属性列表,sqlite数据库和文本文件等。
数据加密iOS4 及以后的系统使用数据加密机制来保护文件系 统中的系统和数据分区。系统和数据分区中的数据将由一 个基于硬件设备的密钥进行加密。在 iPhone3GS 以后的设 备上,该密钥存储于一个AES加密加速硬件上。这个基 于硬件的密钥不能被 CPU 所访问,只有在加解密时才能 由该加速器获取。通过这种机制,直接从硬盘上被取走的 原始数据就无法被正确解密。同时,数据加密机制还提供 了多种加密策略供应用程序选择。应用程序可以选择对一 些敏感文件使用NSFileProtectionComplete 策略而不是默认 的 NSFileProtection 策略加密数据。
疯狂肆虐的电脑病毒几乎都是针对Windows的,由于MAC的架构与Windows不同,沙盒机制、使用人数少、研究成本大、对应用安装的管控力度,所以很少受到病毒的袭击。