您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 利用 iOS4 的新特性进行开发
利用iOS4的新特性进行开发李亮holly.lee@gmail.comforQConBeijing201111年3月30日星期三历史•2007年6月iPhone,iPhoneOS1.0•2008年6月iPhone3G,iPhoneOS2.0,publicSDK•2009年6月iPhone3GS,iPhoneOS3.0•2010年3月iPad,iPhoneOS3.2•2010年6月iPhone4,iOS411年3月30日星期三iOS4的新特性•有限的多任务支持和LocalNotification•开始支持不同的分辨率和不同DPI的设备.•针对多核的支持.GCD,以及语言层面的支持.•GameCenter的引入.游戏社区•iAd.Apple的应用内嵌广告方案•CoreTelephony,CoreVideo,etc.11年3月30日星期三有限的多任务•iOS4之前,没有多任务的日子.•iOS4,应用不再退出,而是挂起.•iOS4,终于给了我们一些多任务,只是很有限.11年3月30日星期三应用程序生命周期What’snew:-(void)applicationWillEnterForeground:(UIApplication*)application-(void)applicationDidEnterBackground:(UIApplication*)applicationWhat’shardtogetcalled:-(void)applicationWillTerminate:(UIApplication*)application11年3月30日星期三运行在后台•保持在后台运行的-VoIP-Locating-Audio•需要运行一段时间的•Localnotification11年3月30日星期三保持在后台运行•系统是否支持后台任务?UIDevicemultitaskingSupported属性•告诉系统需要后台运行Info.plistKey:UIBackgroundModeValue:audio,location,orvoip11年3月30日星期三定位相关•只需要跟踪位置有显著变化的CLLocationManagerstartMonitoringSignificantLocationChangesstopMonitoringSignificantLocationChanges•持续使用系统定位服务的•需要在后台仍然持续跟踪位置变化的11年3月30日星期三后台音频播放•MusicPlaying,streaming,etc...•Keeprunninginbackground,butsuspendedonceaudioplayingstopped.•ConfigurationAudioSessionformultipleappscoordination.11年3月30日星期三VoIP•并非一直运行,而是监视相应的socket.需要特别配置该socket.•Keepalive:UIApplicationsetKeepAliveTimeout:handler:11年3月30日星期三运行一段时间的应用UIApplicationbackgroundTimeRemainingpropertybeginBackgroundTaskWithExpirationHandler:endBackgroundTask:11年3月30日星期三Localnotification•UILocalNotification文字,声音•UIApplicationscheduledLocalNotificationsscheduleLocationNotification:11年3月30日星期三不同的设备•iPhone,iPad,iPodTouch•不同的屏幕尺寸,分辨率,是否视网膜屏幕•不同的设备特性,有无电话功能,有无摄像头,有无定位功能,等等11年3月30日星期三声明设备能力Info.plist中声明需要的设备能力.iTunes以及AppStore用来鉴别是否可以安装到某个设备上.Key:UIRequiredDeviceCapabilitiesValue:ArrayorDictionary.包括:电话,Wifi,sms,照片摄像头,视频摄像头,自动对焦,闪光灯,加速度测量仪,陀螺仪,罗盘,gps,麦克风,CPU类型,蓝牙,是否支持OpenGLES,蓝牙支持,等等.11年3月30日星期三程序中的判断UIDeviceUIUserInterfaceIdiomuserInterfaceIdiomUIImagePickerController+(BOOL)isCameraDeviceAvailable:+(NSArray*)availableCaptureModesForCameraDevice:+(BOOL)isFlashAvailableForCameraDevice:CLLocationManager+(BOOL)headingAvailableCMMotionManagerBOOLgyroAvailable11年3月30日星期三RetinaDisplay视网膜屏幕在不需要代码改动的情况下,带来了更高的分辨率和更清晰的图像/字体质量.•xxxxx.pngtoxxxxx@2x.png图像文件•UIKit/CoreGraphics调用完全自动处理.大小和坐标都是一致的.11年3月30日星期三GrandCentralDispatch•针对多核设计,面向并发编程•操作系统的支持与程序库的结合•语言层面的增强:block11年3月30日星期三Block•Block是在C语言上的增强•与closure或者lambda相似•表示方式:以^代替函数指针的*•特点:局部变量的snapshot;__block变量;与C/Objective-C/C++的结合•作用:将代码分割成可并行的小块,以方便GCD进行调度11年3月30日星期三Block的语法示例typedefvoid(^blockWithString)(char*);char*greeting=“hello”;blockWithStringb=^(char*place){printf(%s%s\n,greeting,place);};greeting=goodbye;b(world);//printshelloworld\n__blockchar*mutable_greeting=hello;c=^{mutable_greeting=goodbye;};printf(%s,mutable_greeting);//-helloc();printf(%s,mutable_greeting);//-goodbye11年3月30日星期三Block的特点•实现:函数指针加上一些上下文数据•内存:在栈中分配.超出作用域需要copy/release•C:Block_copy(b),Block_release(b)•Objective-C:copy,release.支持引用计数•C++:在block中用到的C++对象需要实现constcopyconstructor.11年3月30日星期三GCD的调度队列libdispatch提供了GCD的类型和函数.dispatch_queue_ta_queue;dispatch_async(a_queue,^{b;});•全局并发队列dispatch_get_global_queue();•私有串行队列dispatch_queue_create();•主队列dispatch_get_main_queue();11年3月30日星期三GCD的同步机制•同步调度dispatch_sync(a_queue,^{wait_for_me();});•回调:将回调放到block的末尾•Group机制dispatch_group_notify,dispatch_group_wait•信号量dispatch_semaphore_signal,dispatch_semaphore_wait11年3月30日星期三GCD的事件支持•GCD支持以时钟,POSIXsignal,文件描述符/socket,进程状态,Machport等作为事件源,还支持应用自定事件源.•事件支持提供了一种不阻塞的处理方式11年3月30日星期三GameCenter•社会化潮流在游戏中的体现•GameCenter是设备,app与云结合起来工作的.•GameCenter提供了认证,排行榜,成就,和为多人网络游戏寻找合适玩家的能力.•GameCenter在GameKitframework中提供.11年3月30日星期三GameCenter身份认证.本地玩家,AppleID.11年3月30日星期三GameCenter:Player•GKPlayer类用来代表一个玩家.对任一设备都有一个本地玩家(GKLocalPlayer),别的是远程玩家•playerID,alias,isFriendproperties•认证本地玩家:GKLocalPlayer的authenticateWithCompletionHandler:方法.检查isAuthenticatedproperty•获得远程玩家的信息:GKPlayer的loadPlayersForIdentifiers:withCompletionHnadler:11年3月30日星期三GameCenter:Friends•取得朋友信息:认证并成功调用了loadFriendsWithCompletionHandler:后GKLocalPlayer的friendsproperty包含了friend信息.•利用GKFriendRequestComposeViewController向别的玩家发出朋友邀请.11年3月30日星期三GameCenter:成就•设计成就.Id,标题,描述,点数,图片,是否可见.iTunesConnect配置.•GKAchievement.报告成就的完成度.percentCompleteproperty和reportAchievementWithCompletionHandler:方法.•loadAchievementsWithCompletionHandler:方法来装入目前的成就.•resetAchievementWithCompletionHandler:重置.•用GKArchievementViewController显示成就11年3月30日星期三GameCenter:排行榜•分数以64位整数表示.格式,分类等通过iTunesConnect配置.•GKScore类.initWithCategory:•报告分数:valueproperty,reportScoreWithCompletionHandler:方法.•GKLeaderboardViewController显示排行榜.category和timeScopeproperty•GKLeaderboard类可以获取分数以及分类标题11年3月30日星期三GameCenter:多人竞技•比赛请求GKMatchRequest,指明人数等•显示比赛组成界面GKMatchmakerViewControllerinitWithMatchRequest:•设置GKMatchMaker的inviteHandlerproperty来处理来自别人的邀请.•比赛组成了或者取消时会调用GKMatchmakerViewControllerDelegate的相应方法.•组成时会返回一个GKMatch对象.它包含了参与的玩家的信息以及提供方法在玩家之间传送数据11年3月30日星期三iAd•Apple的应用程序内广告解决方案•两种形式的View.Banner和全屏•需要先加入到iAdnetwork中,并在iTunesConnect中作配置11年3月30日星期三iAd:Banner•AdBannerView•iPhone:320x50&480x32iPad:768x66&1024x66•A
本文标题:利用 iOS4 的新特性进行开发
链接地址:https://www.777doc.com/doc-3673512 .html