




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 序论1.1手机网购的背景1.1.1智能手机的普及和应用随着智能手机的普及和应用,如今的智能手机就好比是一台缩小版的pc。手机已成为互联网上继pc之后的另一大终端。手机购物,原理和电脑上网购物一样,只不过载体从电脑变成了上网手机。结合3g通信网络的的支持,智能手机的发展趋势,势必将成为一个功能强大,集通话、短信、网络接入、影视娱乐为一体的综合性个人手持终端设备。1.1.2无线接入互联网速度提升随着上网速度更快的3g的推出,手机购物将成为现实。目前国内3大运营商的3g网络理论速度均在2.8mb/s左右,是2g网速的20多倍;这样的速度基本可以保证用户流畅地浏览网店页面并进行网络支付,操作体验和电脑上网购物几乎没有区别。随着3g网络实现无缝覆盖,那么势必会有越来越多的用户选择 “边走边购物”的手机购物模式,而手机购物也将成为“网络购物”之后,人们购物模式的又一次“升级”。1.1.3移动电子商务的迅猛发展 移动电子商务(m-commerce),它由电子商务(e-commerce)的概念衍生出来,电子商务以pc机为主要界面,是“有线的电子商务”;而移动电子商务,则是通过利用手机、pda及掌上电脑等无线终端进行的b2b、b2c或c2c的电子商务。随着手机购物的流行速度飙升,电子商务具有十分广阔的前景,目前,京东、当当、凡客、淘宝、1号店大型电子商务网站纷纷推出或完善了自身的手机购物门户,同时研发或升级自己的手机购物终端,努力改善用户体验。1.2 手机网购的目的及其意义手机购物,是指利用手机上网实现网购的过程,属于移动互联网电子商务。未来中国的手机购物会有一个高速增长期,用户只要开通手机上网服务,就可以通过手机查询商品信息,并在线支付购买产品。不用去实体店铺,也不用坐在电脑前“淘货”,一部手机就能完成“逛店”、选购和支付的全过程。手机网购和电脑网购一起,无疑可以更广阔的覆盖用户潜在的购物时间,让人们可以随时随地更便捷地利用电子商务,不浪费人们可能随时随地产生的消费冲动。目前中国的手机网购还处于刚起步阶段,一旦用户习惯了这种手机网购方式,那么其蕴含的巨大潜力,足以成为电子商务的另一个杀手级应用。第二章 手机网购平台的关健技术研究2.1 现有主要的手机网购平台随着网上购物人群数量的增多,促进了国内各大b2c(business-to-customer)网站(淘宝、京东、当当)的发展,这些网站都拥有自几对应的手机客户端软件便于用户通过手机网上购物。目前,谷歌android系统、苹果ios系统和微软windows phone系统占据了手机网购的大部分市场份额。2.1.1谷歌androidandroid中文名“安卓”或“安致”,中国大陆地区较多人称之,其实尚未有统一中文名称,是由谷歌、开放手持设备联盟联合研发,谷歌独家推出的智能操作系统,2011年初数据显示,仅正式上市两年的操作系统android已经超越称霸十年的塞班操作系统,跃居全球第一。2012年11月数据显示,安卓占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%,彻底占领中国智能手机市场,也成为了全球最受欢迎的智能手机操作系统,因为谷歌推出安卓时采用开放源代码(开源)的形式推出,所以导致世界大量手机生产商采用安卓系统生产智能手机,再加上安卓在性能和其他各个方面上也非常优秀,便让安卓一举成为全球第一大智能操作系统,安卓在世界上最为强大的竞争对手为苹果公司研发推出的ios智能操作系统和微软公司研发推出的windows phone智能操作系统,而在开发商上,三星集团(可简称三星)和苹果公司也为手机业竞争的死敌,三星集团也采用安卓智能系统生产智能手机,便与苹果公司共同打败了当年全球第一大手机生产商诺基亚,因为多年与强大对手苹果公司进行激烈的竞争让三星集团成为全球第二大手机生产商,而2011年10月底,三星集团智能手机出货量为2780万部,在全球智能手机市场的份额为23.8%,超越了苹果,也成为了全球手机出货量第一的手机生产商,便导致三星集团一举成为全球第一大手机生产商,但同时也更加成为了苹果公司在手机业的最强大的竞争对手,同时,三星集团也为安卓操作系统驾驭能力最好的手机生产商,在市值上,截止在2012年8月三星集团在全球企业市值中为2000亿美元,2012年三星集团年营业额为1490亿美元(约合人民币9240亿元),2012年世界500强企业中,三星集团排名第20位,三星集团采用安卓获得此成就也让安卓在世界进行了非常重要的推动,也可称之安卓可在世界上拥有这样的辉煌是三星集团所给予。支持厂商:世界所有手机生产商都可任意采用,并且世界上80%以上的手机生产商都采用安卓。基于安卓智能操作系统的第三方智能操作系统:因为谷歌已经开放安卓的源代码,所以中国和亚洲部分手机生产商研发推出了基于安卓智能操作系统的第三方智能操作系统,其中来源于中国手机生产商的基于安卓智能操作系统的第三方智能操作系统最为广泛,例如米柚、乐蛙、深度os、点心os、腾讯tita、百度云rom、乐os、cyanogenmod、joyos、emotion ui、flyme os、sense、lg optimus、魔趣、oms、百度易、blur、阿里云os等,其中,阿里云os和oms与安卓都是以linux操作系统为内核的智能操作系统,因为阿里云os和oms都吸取了安卓的大量精华,所以也可以说都是基于安卓智能操作系统的第三方智能操作系统。2.1.2苹果ios苹果公司研发推出的智能操作系统,采用封闭源代码(闭源)的形式推出,因此仅能苹果公司独家采用,截止至2011年11月,根据canalys的数据显示,ios已经占据了全球智能手机系统市场份额的30%,在美国的市场占有率为43%,为全球第二大智能操作系统,ios在世界上最为强大的竞争对手为谷歌推出的安卓智能操作系统和微软推出的windows phone智能操作系统,但ios因为具有着独特又极为人性化,极为强大的界面和性能深受用户的喜爱,ios本身就为一款发烧级的智能操作系统,苹果手机也全部采用ios操作系统,因此苹果手机也是一款世界顶尖的发烧级手机,但也为世界上最为昂贵的手机,早期时苹果公司与三星集团共同打败当年的全球第一大手机生产商诺基亚,因为苹果公司的手机出货量全球第一,便成为了续诺基亚后的全球第一大手机生产商,而把三星集团一直打压在全球第二大手机生产商的位置,但在2011年10月底,苹果手机出货量为1710万部,市场份额为14.6%,为全球手机出货量第二的手机生产商,因为苹果公司最为强大的竞争对手三星集团大发威力,手机出货量超越苹果公司,导致全球第一大手机生产商的宝座被三星集团夺取,但苹果公司为了反击夺取全球第一大手机生产商的宝座仍然在与三星集团进行激烈的竞争中,苹果公司截止在2012年8月在全球企业市值中已经突破6230亿美元,成为世界市值第一的上市公司,2011年财年苹果公司年营业额为1082.5亿美元(约合人民币6716亿元),2012年世界500强企业中,苹果公司排名第55位!支持厂商:苹果(闭源)。 2.1.3微软windows phone微软公司研发推出的智能操作系统,同时将谷歌的android和苹果的ios列为主要竞争对手,早期为全球第五大智能操作系统,截止至2012年8月,微软windows phone(包括旧windows mobile系列和windwos phone系列)占据了全球智能手机系统市场份额的为24%,超越了黑莓和塞班,成为了全球第三大智能操作系统,一款全新的智能操作系统的辉煌就此拉开序幕,并且,前几年的全球第一大手机生产商诺基亚与微软达成全球战略同盟并深度合作共同研发windows phone,因此可预计,再过不久,谷歌的android和苹果的ios两大全球顶尖级的智能操作系统会迎来新的强大竞争对手。支持厂商:诺基亚、三星,华为,htc。2.2 android系统平台技术2.2.1 android系统概述 android基础知识android是目前最流行的手机开发平台,依靠google强大开发和媒体资源,android成为众多手机厂商追逐的对象。android是包括一个操作系统、中间件和关键应用的移动设备的一个软件堆。目前android的双重开发模式为:各厂商在统一开放平台开发手机和第三方开发手机应用。android在技术上具有相当的优势,最显著的地方体现在它的全开放性,另外多硬件平台的支持、使用众多的标准化技术、核心技术完整,统一、完善的sdk和文档、完善的辅助开发工具等,使其成为众多智能手机平台。 android的开发目前,android的开发分成三种类型:移植开发手机系统、应用程序开发及android系统开发。android系统开发 android的sdk与源代码android开发有两种形式,一种是android的sdk,有linux和windows两种环境。一种是android的完全源代码(完全源代码,linux中开发)android的sdk以二进制的形式提供,用于应用开发java应用程序。不同版本的android的sdk:p android-sdk-linux_x86-1.0p android-sdk-windows_x86-1.0p android-sdk-linux_x86-1.5_r2p android-sdk-windows_x86-1.5_r2p android-sdk-linux_x86-1.6_r1p android-sdk-windows_x86-1.6_基于源代码android的开发在获取所有源代码的基础上进行,可以开发应用程序,进行系统移植,或开发系统本身。android的源代码可以从其git的源代码仓库中获得:2.2.2 android系统的开发综述 android的系统架构操作系统层使用c语言编写,运行于内核空间。底层库和java虚拟机使用c语言编写,运行于用户空间。java框架和java应用程序使用c语言编写,运行于用户空间。android的第1层次由c语言实现,第2层次由c和/c+实现,第3、4层次主要由java代码实现。第1层次和第2层次之间,从linux操作系统的角度来来看,是内核空间与用户空间的分界线,第1层次运行于内核空间,第2、3、4层次运行于用户空间。第2层次和第3层次之间,是本地代码层和java代码层的接口。第3层次和第4层次之间,是android的系统api的接口,对于android应用程序的开发,第3层次以下的内容是不可见的,仅考虑系统api即可。android 的核心系统服务依赖于 linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 linux 内核也同时作为硬件和软件栈之间的抽象层。android 包含一些c/c+库,这些库能被android系统中不同的组件使用。它们通过 android 应用程序框架为开发者提供服务。p 系统 c 库 :一个从 bsd 继承来的标准 c 系统函数库, 专门为基于嵌入式linux 的设备定制的。p 媒体库 :基于 packetvideo opencore;该库支持多种常用的音频、视频格式回放和录制。p surface manager : 对显示子系统的管理,图层功能。p webcore : 一个最新的web浏览器引擎用,支持android浏览器和一个可嵌入的web视图。p sgl : skia的2d图形引擎p 3d libraries : 基于opengl 实现;该库可以使用硬件3d加速(如果可用)或者使用高度优化的3d软加速。freetype :位图(bitmap)和矢量(vector)字体显示。android运行库android 包括了一个核心库,该核心库提供了java编程语言核心库的大多数功能。每一个android应用程序都在它自己的进程中运行,都拥有一个独立的dalvik 虚拟 机实例。dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。dalvik虚拟机执行(.dex)的dalvik可执行文件,该格式文件针对小内存使用做了 优化。同时虚拟机是基于寄存器的,所有的类都经由java编译器编译,然后通过sdk 中 的 dx 工具转化成.dex格式由虚拟机执行。dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。android应用程序框架:开发人员也可以完全访问核心应用程序所使用的api框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统, 其中包括;丰富而又可扩展的视图(views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons ), 甚至可嵌入的web 浏览器。内容提供器(content providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据资源管理器(resource manager ):提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。p 通知管理器 ( notification manager): 使得应用程序可以在状态栏中显示自定义的提示信息。p 活动管理器( activity manager) :用来管理应用程序生命周期并提供常用的导航回退功能。android应用程序:android会同一系列核心应用程序包一起发布,这些应用程序包也就是预置的应用程序,主要包括email客户端,sms短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用java语言编写的。 android源代码的开发环境开发android主机环境需要git工具、repo工具、java的jdk和主机编译工具。android代码的工程分为三个部分:p 核心工程( core project)建立android系统的基础,在根目录的各个文件夹中。p 扩展工程( external project)使用其他开源项目扩展的功能,在external文件夹中。包( package)提供android的应用程序和服务,在package文件夹中。编译android系统,在其根目录下中具有一个makefile,直接执行make即可。$ makemake的过程将递归找到各个目录中的android.mk文件进行编译。android的编译将搜索所有的目录,编译本身和目录的名称以及位置没有关系。android系统编译完成的结果全部在其根目录的out目录中,在其他目录中没有内容。 android编译完成后可以在qemu中运行,首先设置环境变量:$ declare -x android_product_out=androidrootout/target/product/generic“$./out/host/linux-x86/bin/emulator -shell运行android:按照这种方式运行后,在出现图形系统的同时,将会出现android的shell界面。默认皮肤为:hvga-p=320480。android emulatorandroid emulator基于qemu,这个仿真器支持android virtual device (android虚拟设备)以及很多的调试性能。使用android emulator可以仿真android整个系统运行,在运行的过程中,可以指定内核、主文件系统、用户文件系统等。$ emulator -avd - . -默认使用的内核是:prebuilt/android-arm/kernel/kernel-qemu2.2.3 android底层库与程序底层库和程序的结构android的本地实现层次具有基本的库和程序。这些库和程序是android基本系统运行的基础。android中增加本地的程序或者库,这些程序和库与它们所在的路径没有关系,只和它们的android.mk文件有关系。android.mk具有统一的写法,主要包含了一些系统公共的宏。选项参考以下文件:build/core/config.mk默认的值在以下文件中定义:build/core/base_rules.mk在一个android.mk中也可以生成多个可执行程序、动态库或者静态库。可执行程序的android.mk:# test exelocal_path:= $(call my-dir)include $(clear_vars)local_src_files:= main.clocal_module:= test_exe#local_c_includes :=#local_static_libraries :=#local_shared_libraries :=include $(build_executable)静态库(归档文件)的android.mk:# test static liblocal_path:= $(call my-dir)include $(clear_vars)local_src_files:= helloworld.clocal_module:= libtest_static#local_c_includes :=#local_static_libraries :=#local_shared_libraries :=include $(build_static_library)动态库(共享库)的android.mk:# test shared liblocal_path:= $(call my-dir)include $(clear_vars)local_src_files:= helloworld.clocal_module:= libtest_sharedtarget_prelink_module := false#local_c_includes :=#local_static_libraries :=#local_shared_libraries :=include $(build_shared_library)可执行程序、动态库和静态库生成的女表分别在以下的文件夹中:out/target/product/generic/obj/executableout/target/product/generic/obj/static_libraryout/target/product/generic/obj/shared_library其目标的文件夹分别为:xxx_intermediatesxxx_shared_intermediatesxxx_static_intermediates对于可执行程序和动态库,生成的link子目录中的包含带有符号的库(没有经过strip)编译模板的区别如下所示:目标的模板:可执行程序,动态库,静态库include $(build_executable)include $(build_shared_library)include $(build_static_library)如果编译主机的:可执行程序,动态库,静态库include $(build_host_executable)include $(build_host_shared_library)include $(build_host_static_library)安装路径的问题local_module_path和local_unstripped_path增加以下可以安装到不同的文件系统:local_module_path := $(target_root_out)local_unstripped_path := $(target_root_out_unstripped)文件系统的选择:target_root_out :表示根文件系统out/target/product/generic/roottarget_out :表示system文件系统out/target/product/generic/systemtarget_out_data :表示data文件系统out/target/product/generic/data 标准c/c+库bionicbionic提供c/c+标准库的功能,它是一个专为嵌入式系统设计的轻量级标准库实现。bionic的源码和头文件在以下的目录中:bionic/相对传统的标准库实现,如glibc,bionic的体积和内存占用更小。 bionic支持标准c/c+库的绝大部分功能,支持数学库,以及nptl线程库。它还实现了自己的linker以及loader,用于动态库的创建和加载。bionic加入了一些android独有的功能,比如log的底层支持。另外它还实现了一套property系统,这是整个android的全局变量的存储区域,bionic使用共享内存的方式来实现维property系统。 c语言底层库libcutilsc语言底层库提供了c语言中最基本的工具功能。这是android本地中最为基础的库,基本上android中所有的本地的库和程序都连接了这个库。头文件的路径:system/core/include/cutils库的路径system/core/libcutils编译的结果是:libcutils.solibcutil中主要的头文件:threads.h:线程sockets.h:android的套接字properties.h:android的属性log.h:log信息array.h:数组ashmem.h:匿名共享内存atomic.h:原子操作mq.h:消息队列 init进程android启动后,系统执行的第一个进程是一个名称为init的可执行程序。提供了以下的功能:p 设备管理p 解析启动脚本p 执行基本的功能p 启动各种服务代码的路径:system/core/init编译的结果是一个可执行文件:init启动脚本的路径:system/core/rootdir/init.rcinit的可执行文件是系统运行的第一个用户空间的程序,它以守护进程的方式运行。init.rc是在init启动后被执行的启动脚本,其语法包含了actions,triggers,services,options,commands,properties等。 shell工具android系统的启动后,提供了基本shell界面供开发调试使用。需要启动了一个名称为console的服务,实际上执行的程序:/system/bin/shsh代码的路径:system/core/shtoolbox代码的路径:system/core/toolbox生成的文件/system/bin/toolbox,目标文件系统/system/bin/中的具有一些符号将连接到toolbox上。 c+工具库libutilslibutils是android的底层库,这个库以c+实现,它提供的api也是c+的。android的层次的c语言程序和库,大都基于libutils开发。头文件的路径:frameworks/base/include/utils库的路径frameworks/base/libs/utils编译的结果是:libutils.soerrors.h:定义宏表示错误代码endian.h:定义表示大小端的宏misc.h:几个字符串和文件相关的功能函数textoutput.h:定义文本输出的基类textoutputbufferedtextoutput.h:类bufferedtextoutput,它是一个textoutput的实现pipe.h:定义管道类pipebuffer.h:定义内存缓冲区域的类bufferlist.h:定义链表的模版类sharedbuffer.h:定义类sharedbuffer表示共享内存。string16.h:定义表示双字节字符串的类string16string8.h:定义表示单字节字符串的类string8,并包含了从string16转换功能vectorimpl.h:定义表示向量的类vectorimplvector.h:定义继承vectorimpl的类模版vectorsortedvector.h:定义排序向量的模版sortedvectorkeyedvector.h:定义使用关键字的向量模板keyedvectorthreads.h:定义线程相关的类,包括线程thread、互斥量mutex、条件变量condition、读写锁readwritelock等socket.h:定义套结字相关的类sockettimers.h:定义时间相关的函数和定时器类durationtimer。zipentry.h、zipfilecro.h、zipfile.h、zipfilero.h、ziputils.h:与zip功能相关的类。binder用于进程间的通讯(ipc),它的实现基础是运行与kernel空间的binder驱动。 android的系统进程android中几个重要系统进程为:/init/system/bin/servicemanager ,/system/bin/mediaserversystem_serverzygote前面init分析章节提到init通过解析init.rc,启动对应的服务程序。servicemanager,zygote和mediaserver都通过这种方式启动。system_server则是通过zygote孵化出来。这几个进程是android系统运行的基础2.2.4 android的连接wifi(wireless fidelity),是使用了ieee的802.11协议的无线局域网(wlan)技术。在android中wifi包括kernel的支持和用户空间的程序和库两个部分。wifi用户空间的程序和库:external/wpa_supplicant生成库:libwpaclient.so 生成守护进程:wpa_supplicantwifi管理库:hardware/libhardware_legacy/wifi/android的wifi系统的jni的部分:frameworks/base/core/jni/android_net_wifi_wifi.cppwifi系统的的java部分实现代码:frameworks/base/services/java/com/android/server/frameworks/base/wifi/java/android/net/wifi/android的wifi本地实现部分主要包括wpa_supplicant以及wpa_supplicant适配层。wpa是wifi protected access的缩写,中文含义为“wifi网络安全存取”。wpa是一种基于标准的可互操作的wlan安全性增强解决方案,可大大增强现有以及未来无线局域网系统的数据保护和访问控制水平。wpa_supplicant适配层是通用的wpa_supplicant的封装,在android中作为wifi部分的硬件抽象层来使用。wpa_supplicant适配层主要用于封装与wpa_supplicant守护进程的通信,以提供给android框架使用。它实现了加载,控制和消息监控等功能。wpa_supplicant适配层的头文件如下所示:hardware/libhardware_legacy/include/hardware_legacy/wifi.hwpa_supplicant适配层是通用的wpa_supplicant的封装,在android中作为wifi部分的硬件抽象层来使用。wpa_supplicant适配层主要用于封装与wpa_supplicant守护进程的通信,以提供给android框架使用。它实现了加载,控制和消息监控等功能。wpa_supplicant适配层的头文件如下所示:hardware/libhardware_legacy/include/hardware_legacy/wifi.handroid的settings应用程序对wifi的使用,是典型的wifi应用方式,也是用户可见的android wifi管理程序。这部分的实现代码在以下的目录中:packages/apps/settings/src/com/android/settings/wifi/settings里的wifi部分是用户可见的设置界面,提供wifi开关、扫描ap、连接/断开等基本功能。另外,通过实现wifilayer.callback接口提供了一组回调函数,用以响应用户关心的wifi状态的变化。2.3 ios系统平台技术2.3.1 iphone sdk 苹果公司将大部分系统接口发布在框架这种特殊的数据包。一个框架就是一个目录,它包含一个动态共享库以及使用这个库所需的资源(例如头文件、图像以及帮助应用程序等)。如果要使用某个框架,则需要将其链接到应用程序工程,这一点和使用其他共享库相似。另外,您还需要告知开发工具何处可以找到框架头文件以及其他资源除了使用框架,苹果公司还通过标准共享库的形式来发布某些技术。 由于ios以unix为基础,操作系统底层的许多技术都源自开源技术,这些技术的许多接口可以从标准库和接口目录访问。 cocoa touch 层cocoa touch层包含创建 ios应用程序所需的关键框架。上至实现应用程序可视界面,下至与高级系统服务交互,都需要该层技术提供底层基础。在开发应用程序的时候,请尽可能不要使用更底层的框架,尽可能使用该层的框架。多任务尽管应用程序进入后台就会被挂起,但可以通过下述的技术让其在后台继续运行:应用程序可以请求一定的时间完成某些重要的任务。应用程序可以声明自身支持的某种服务需要获得定期后台执行时间。应用程序可以使用本地通告在指定时间向用户发通知。这种方式对于应用程序是否运行没有要求。不管应用程序是被挂起还是在后台运行,支持多任务不需要付出额外的工作。但是在某些情况(例如内存不足)下,应用程序可能会被结束运行。因此,应用程序应该可以在任何时候退出。这就意味着许多在退出应用程序时需要执行的任务必须改为在应用程序切换到后台的时候执行。这就要求您在应用程序委托中实现一些新的方法以响应程序的状态切换。数据保护和敏感用户数据打交道的应用程序可以使用设备内建加密功能(有些设备可能不提供内建加密功能)对数据进行保护。如果应用程序指定某个文件受保护,系统会以加密格式将该文件保存在磁盘。当设备锁住的时候,您的应用程序以及其他潜在的闯入者都不能访问该文件,而当用户解锁设备后,系统会生成一份密钥以便您的应用程序就访问该文件。如需实现数据保护,应用程序应在待保护数据的创建和管理方式下一些功夫。它必须能够在数据创建之时保证其安全,而且需要适配设备上锁或未上锁造成的文件可访问性的变化。苹果推送通知服务从设计角度看,让应用程序支持推送通知包含两个部分。首先,ios应用程序需要请求系统向其发送通知,然后要合理配置应用程序委托使其可以对通知进行恰当处理。这些工作可以通过应用程序委托以及uiapplication对象合作完成。第二,您需要提供一个服务器端进程用于产生最初的通知。该进程运行在您自己的本地服务器,它和苹果推送通知服务协同工作以产生最初的通知。本地通知ios 4.0引入了本地通知。本地通知是对已有推送通知的补充,通用程序可以通过它在本地生成通知,不再需要依赖外部服务器。当有重要的事件发生时,后台应用程序可以利用本地通知获得用户关注。举个例子,运行于后台的导航应用程序可以使用本地通知提醒用户要转弯。应用程序也可以安排在未来的某个时刻向用户发送本地通知,而且发送这些通知并不要求应用程序处于运行状态。本地通知的优点是它独立于您的应用程序。一旦某个通知被安排好后,系统会负责通知发送。而且在发送通知的时候,您的应用程序无需处于运行状态手势识别器ios 3.2引入了手势识别器。手势识别器是一个绑定到视图的对象,用于检测常见的手势类型。将手势识别器绑定到视图后,您可以告诉它某个手势发生的时候执行何种动作。之后,手势识别器就可以对原始事件进行跟踪,根据系统定义的试探方式识别手势。在引入手势识别器前,如果要识别一个手势,您需要跟踪视图的原始触摸事件流,然后再使用复杂的试探方法来判断这些事件是否表示某种手势。现在,uikit框架中包含一个uigesturerecognizer类,它定义了所有手势识别器的基本行为。您可以使用自定义的手势识别器子类或者系统定义的某个子类处理下面这些标准手势: 拍击 (任意次数的拍击) 向里或向外捏 (用于缩放) 摇动或者拖拽 擦碰 (以任意方向) 旋转 (手指朝相反方向移动) 长按如需进一步了解您可以使用的手势识别器文件共享支持应用程序可以使用文件共享让用户访问程序的用户数据文件。文件共享允许应用程序通过itunes向用户显露应用程序/documents目录的内容。这样,用户就可以在ipad和桌面计算机来回移动文件。但是,该功能不允许应用程序和同一设备上的其他应用程序共享文件。如果希望在程序间共享文件,请使用剪贴板或者文档交互控制器对象。您可以通过如下步骤来让应用程序支持文件共享:1. 在应用程序的info.plist文件中添加uifilesharingenabled键,并将键值设置为yes。2. 将您希望共享的文件放在应用程序的documents目录。3. 一旦设备插入到用户计算机,itunes 9.1就会在选中设备的apps标签中显示一个file sharing区域。4. 此后,用户就可以向该目录添加文件或者将文件移动到桌面计算机中。如果应用程序支持文件共享,当文件添加到documents目录后,应用程序应该能够识别并做出适当响应。例如说,应用程序可以将新文件的内容显示界面上。请不要向用户展现目录的文件列表并询问他们希望对文件执行什么操作。点对点服务在ios 3.0 及后续版本,game kit框架支持经由蓝牙进行点对点连接。您可以使用点对点连接启动与某个邻近设备的通讯会话,也可用它实现多种多玩家游戏的常见特性。虽然点对点连接主要应用于游戏,但您也可将之应用于其他类型应用程序。标准系统视图控制器cocoa touch层许多框架含有展现标准系统界面的视图控制器。我们提倡您在应用程序中使用这些视图控制器,这样可以让您的程序和系统具有一致的用户体验。如果您需要执行下述任务,请从相应的框架中选择一个视图控制器使用: 显示或者编辑联系人信息- 请使用address book ui框架中的视图控制器。 创建或者编辑日历事件- 请使用event kit ui框架的视图控制器。 创建email或者sms消息- 请使用message ui框架中的视图控制器。 打开或者预览一份文件的内容- 请使用uikit框架中的uidocumentinteractioncontroller类。 从用户的照片库选取一张照片- 请使用uikit框架中的uiimagepickercontroller类。 拍摄视频片段- 请使用uikit框架中的uiimagepickercontroller类。 如需了解如何选择使用视图控制器,请查看ios视图控制器编程指南。如需了解特定视图控制器所展现的界面,请查看相应的框架参考。0外部设备支持安装ios 3.2的设备可通过一组设备支持的线缆连接一个外部显示设备。当外部设备连上后,应用程序就可以使用其显示屏显示内容。屏幕的信息,包括屏幕能够支持的分辨率都可通过uikit框架的接口获取。您也可以通过该框架将应用程序窗口关联到某个屏幕。uiscreen类用于获取当前所有屏幕(包括设备主屏幕)的屏幕对象。屏幕对象包含屏幕的属性信息(包括将屏幕的尺寸和像素比例也考虑在内的屏幕特征)。您可以从uiscreenmode类获得某个具有特定尺寸像素比例的屏幕的信息。您可以将窗口(使用uiwindow类来表示)指定到某个特定的屏幕。如果您需要对内容作镜像显示,则需要提供两个独立的窗口,然后再在其中显示相同内容。2.3.2 cocoa touch 层包含的框架map kit 框架ios 3.0导入了map kit框架 (mapkit.framework) ,该框架供一个可被嵌入到应用程序的地图界面,该界面包含一个可以滚动的地图视图。您可以在视图中添加定制信息,并可将其嵌入到应用程序视图,通过编程的方式设置地图的各种属性(包括当前地图显示的区域以及用户的方位)。您也可以使用定制标注或标准标注(例如使用测针标记)突出显示地图中的某些区域或额外的信息。在ios 4.0系统中,该框架开始支持可拖动标注以及定制覆盖层。可拖动标注允许您通过编程方式或通过用户交互方式重定位某个标注的位置。覆盖层可用于创建多个点组成的复杂地图标注。地图表面诸如公交路线、选举地图、公园边界或者气象信息(例如雷达数据)等可以使用覆盖层进行显示。图形技术:创建应用程序最简单最有效的方法是使用事先渲染过的图片,搭配上标准视图以及uikit框架的控件,然后把绘制任务交给系统来执行。但是在某些情况下,您可能需要一些uikit所不具有的功能,而且需要定制某些行为。在这种情况下,您可以使用下述技术管理应用程序的图形内容:core graphics (也被称为quartz),用于处理本地2d向量渲染和图片渲染。core animation ( quartz core框架的一部分),为动画视图和其他内容提供更高级别支持。opengl es,为使用硬件加速接口的2d和3d渲染提供支持。core text,提供一个精密的文本布局和渲染引擎。image i/o,提供读取及编写大多数图形格式的接口。资产库框架(assets library framework),可用于访问用户照片库中的照片和视频。大多数应用程序应该无需改动,或者只需做很少修改,便可运行在具备高分辨率屏幕的设备。因为在绘图或者操作视图的时候,您所指定的座标值会被映射到逻辑座标系统,它和底层屏幕分辨率没有关联。而且绘制的内容会自动根据需要按比例缩放,以此来支持高分辨率屏幕。对基于向量进行绘制的代码来说,系统框架会自动使用额外的像素来改善图画的内容,使其变得更清晰。如果应用程序中使用了图片,则可以利用uikit自动加载现有图片的高分辨率版本。音频技术:请记住,要尽可能地选取高级框架,因为它们可以简化播放音频所需的工作。下面列出的框架从高级到低级排列,媒体播放器框架(media playerframwork)提供的是最高级的接口:媒体播放器框架。该框架可以让访问用户的itume库变得很容易,并且支持播放曲目和播放列表。av foundation框架。它提供一组简单易用的objective-c接口,可用于管理音频的播放或录制。.openal框架。它提供一组跨平台,用于发布方位音频的接口。core audio框架。它提供的接口简单而精密,可用于播放或录制音频内容。您可以使用这些接口播放系统的警报声音、触发备的震动功能、管理多声道的缓冲和播放、对音频内容进行流化处理。视频技术:选择视频技术的时候,请尽可能选择高级框架,因为高级框架可以简化为提供对某种功能的支持所需的工作。下面列出的框架由高级到低级排列。其中,媒体播放器框架提供最高级的接口:媒体播放器框架,它提供一组易于使用的接口,可用于播放应用程序中全屏或部分屏的电影。av foundation框架,它提供一组objective-c接口,可以对电影的捕捉和播放进行管理。core media框架,它对较高级框架使用的底层类型进行描述,同时也提供一些底层接口,它们用于对媒体进行处理。core services 层core services层为所有的应用程序提供基础系统服务。可能应用程序并不直接使用这些服务,但它们是系统很多部分赖以建构的基础。下面的部分描述一些比较常见特性,也许您正打算让您的应用程序支持这些特性。块对象grand central dispatch应用程序内购买(in app purchase)定位服务sqlitexml 支持2.3.3 core foundation 框架core foundation框架(corefoundation.framework) 是一组c语言接口,它们为ios应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:群体数据类型 (数组、集合等)程序包字符串管理日期和时间管理原始数据块管理偏好管理url及数据流操作线程和runloop端口和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古阿拉善盟首批事业单位“1+N”招聘54人考前自测高频考点模拟试题及完整答案详解一套
- 项目施工现场的能源管理方案
- 2025江苏泰州市第四人民医院招聘高层次人才15人考前自测高频考点模拟试题及答案详解(名师系列)
- 戒酒培训知识课件
- 项目合作与沟通协调方案
- 盐业集团笔试题目及答案
- 定远幼教面试真题及答案
- 汝州卫校考试题型及答案
- 生活垃圾分类设备安装技术方案
- 2025广东河源市连平县政务服务和数据管理局招聘编外人员2人模拟试卷附答案详解(突破训练)
- 高质量临床护理服务实施路径
- 2025年辅警招聘考试试题库及答案(必刷)
- 烟花爆竹经营培训试题及答案
- 2025年医院精神科冲动伤人患者应急预案及演练脚本
- 车位退还协议书
- 手榴弹教学课件
- 工厂临时用工方案(3篇)
- 监理整改措施方案(3篇)
- 景区酒店融资方案(3篇)
- GB/T 9948-2025石化和化工装置用无缝钢管
- 下肢静脉血栓疑难病例护理讨论
评论
0/150
提交评论