https://github.com/ChenYilong/iOS10AdaptationTipsgit
全部第三方应用均可以用Siri,支持音频、视频、消息发送接收、搜索照片、预订行程、管理锻炼等github
背景就是iOS9的时候系统给予的主动建议 经过:Spolight搜索,Safari搜索,Handoff,或者siri建议。 在iOS10以后新增了,键盘QuickType建议,地图,车载娱乐,应用切换,siri交互,锁屏播放。eg:你正在一个应用里看一个酒店,可使用mapitem属性保存正在查看的这个酒店的位置,而后你切换旅行或地图App时这个位置能够自动提供使用。 若是你须要这样利用系统来共享一个位置,那你须要指定这个位置的经纬度、地名、电话等属性来便于siri的直接调起。算法
在 iOS 10 里面开发者能够给 Message.app 提供两种 App Extension,分别是能够提供一个表情包(没错,英文名就叫 Sticker Pack),和一个自定义的界面,用于表情搜索等api
iOS 10 中之前杂乱的和通知相关的 API 都被统一了,如今开发者可使用独立的 UserNotifications.framework 来集中管理和使用 iOS 系统中通知的功能。 在 iOS 10 中,开发者的服务器有机会在本地或者远程通知发送给用户以前再进行修改。 在此基础上,Apple 还增长了撤回单条通知,更新已展现通知,中途修改通知内容,在通知中展现图片视频,自定义通知 UI 等一系列新功能,很是强大。xcode
IOS 10 引入Speech.framework用来支持语音识别, 在app中能够识别语音并转成文本, 语音来源能够是实时的也能够是录音。安全
包括Core Graphics,Core Image,Metal,AVFoundation在内的图像框架极大的改善了对更加普遍的像素格式和宽色域色彩空间的支持。服务器
真色调(True Tone)显示使用环境光传感器,能够作到配合当前环境的光线条件自动调节显示的颜色和强度。若是你的应用是阅读类,和环境中的白点保持一致对用户来讲就是有益的。网络
新的CSSearchQuery类支持搜索那些你用Core Spotlight API指出的应用内内容。 使用这些API能够淘汰你应用中单独的搜索索引,以及更好的利用Spotlight强大的搜索技术,同时,匹配规则容许用户在不离开你应用的条件下搜索内容,就像他们在Mail,Messages和Notes中体验到的同样。多线程
iOS10引入了一个新的锁屏设计,新的锁屏如今会显示各类widget。并发
在iOS10中,用户能够从网页上,或经过Siri和地图的互动来使用Apple Pay进行简单和安全的支付。 对于开发者来讲,iOS10引入了能够同时在iOS和watchOS上使用的新API,支持动态支付网络的能力,和新的沙盒测试环境。
iOS10引入几个变化来帮助您提升代码的安全和维护用户数据的隐私性。 想了解更多,请查阅https://developer.apple.com/security/。
CallKit框架(CallKit.framework)使得VoIP应用能与iPhone UI整合到一块儿,从而给用户带来更好的体验。 使用这个框架来让用户在锁屏页面查看和接听打来的VoIP电话,并在Phone应用的我的收藏和最近通话视图中管理来自VoIP通话的联系人。 CallKit框架一样也引入了应用扩展(app extensions),这个扩展能够进行呼叫拦截和来电识别。你能够建立一个应用扩展来将电话号码和名称关联起来,或是告诉系统什么样的号码须要被拦截。
News Publisher使用Apple News Format来让发表设计精美的新闻、杂志、网页内容到Apple News变的简单。 从各大杂志或新闻机构这种独立出版商,到我的博客,任何人均可以注册。
iOS10引入了Video Subscriber Account框架(VideoSubscriberAccount.framework)来帮助应用支持流媒体认证或认证视频点播(也被称为TV Everywhere)与他们的有线电视或卫星电视供应商认证。 对于那些用户注册一次就能解锁流媒体订阅服务的应用来讲,使用这个框架中的API能够帮助你支持单一登陆体验。
AVKit、Core Image、GameKit、GameplayKit、HealthKit、HomeKit、Metal、ModelIO、Photos、ReplayKit、ReplayKit、SpriteKit均有不一样程度的改动。详细请参考官方iOS 9.3 to iOS 10.0 API Differences
在iOS 10以前,tabBarItem上的文字颜色,默认是蓝色,上面的新消息提醒数字badge 默认是红色的,未选中的TabBarItem的文字颜色默认是黑色的,咱们修改的话,也只能修改它的默认颜色 ,其它的就不能进行个性化定制,使用起来很是的不方便,iOS10以后咱们能够轻松个性化定制了。
在之前若是说咱们想改变APP中程序的字体大小,咱们只能自定义字体或者使用runtime进行处理,或者都得设置UIFont,很是的不方便,从iOS 10苹果官方容许咱们自定义设置 代码:self.labels.adjustsFontForContentSizeCategory = YES;
那么在iOS 10以前,咱们使用UIView 作动画效果或者自定义一些layer 的动画,若是开始了,通常没法进行中止操做更不能暂停操做,并且一些很是复杂的动画处理也比较麻烦,可是在iOS10,苹果推出了一个全新的APIUIViewPropertyAnimator,可供咱们处理动画操做
在iOS10以前,UIColor中设置颜色只能经过RGB 来表示,在iOS原生还不支持#16进制写法,还得本身写分类去处理,咱们知道RGB表示的颜色是优先的,并且也是不精准的,那么在iOS10中,苹果官方新增了colorWithDisplayP3Red方法
在iOS 10.0之前的年代,咱们要想使用应用程序去打开一个网页或者进行跳转,直接使用[[UIApplication sharedApplication] openURL 方法就能够了,可是在iOS 10 已经被废弃了,由于使用这种方式,处理的结果咱们不能拦截到也不能获取到,对于开发是很是不利的,在iOS 10全新的推出了[UIApplication sharedApplication] openURL:nil options:nil completionHandler:^(BOOL success);有一个成功的回调block 能够进行监视。
iOS系统自带的刷新控件支持全部的 UIScrollView 以及其子类,好比说 UICollectionView,UITableView。
好比访问的摄像头、麦克风等硬件,都须要提早请求应用权限、容许后才可使用,或者如今要提早声明,虽然以往要求不严格。好比在iOS10中访问通信录时,强制必须在Info.plist中加入NSContactsUsageDescription等描述,不然应用会崩溃。 崩溃日志: ***This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescriptionkey with a string value explaining to the user how the app uses this data.
在Xcode 8中,代码签名错误的状况应该不会存在了。 在每个targe中,你均可以在框中打勾来告诉Xcode让它来表明你管理代码签名。 对于新项目这个选项默认是打开的。 打勾之后,Xcode为你管理certificates, provisioning profiles和 application identifiers。
Xcode8上打开项目要当心,尤为是对于xib过程,在变更后可不要随意点保存,不然当你回头用Xcode7打开时时发现报错了,Xcode保存的xib在xcode7上是识别不了的, 若是你在Xcode8中打开或者xib文件,会弹出以下提示框, 忽视他
这Xcode新特性,自动识别跟踪找到漏洞而且报告问题, 有些很难跟踪的bug,直到您的应用程序到了用户手中,也可能没有被发现。 Thread Sanitizer spots:新的线程污点清理器, 解决多线程状况下的资源竞争条件,数据的变化和其它相关线程的 bug View Debugger:使用更新的带有更大的保真度和视觉精度检查UI约束问题的视图调试器 Memory Debugger:能够用新的内存调试跟踪器跟踪发出的内存泄漏警报。
好比访问的摄像头、麦克风等硬件,都须要提早请求应用权限、容许后才可使用,或者如今要提早声明,虽然以往要求不严格。好比在iOS10中访问通信录时,强制必须在Info.plist中加入NSContactsUsageDescription等描述,不然应用会崩溃。 崩溃日志: ***This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescriptionkey with a string value explaining to the user how the app uses this data. Photo Library NSPhotoLibraryUsageDescription Camera NSCameraUsageDescription Microphone NSMicrophoneUsageDescription Location NSLocationUsageDescription Location When In Use NSLocationWhenInUseUsageDescription Location Always NSLocationAlwaysUsageDescription Calendars NSCalendarsUsageDescription Reminders NSRemindersUsageDescription Motion NSMotionUsageDescription Health Update NSHealthUpdateUsageDescription Health Share NSHealthShareUsageDescription Bluetooth Peripheral NSBluetoothPeripheralUsageDescription
Xcode8上打开项目要当心,尤为是对于xib过程,在变更后可不要随意点保存,不然当你回头用Xcode7打开时时发现报错了,Xcode8保存的xib在xcode7上是识别不了的, 若是你在Xcode8中打开或者xib文件,会弹出以下提示框, 忽视他
在iOS 10.0之前的年代,咱们要想使用应用程序去打开一个网页或者进行跳转,直接使用[[UIApplication sharedApplication] openURL方法就能够了,可是在iOS 10 已经被废弃了,由于使用这种方式,处理的结果咱们不能拦截到也不能获取到,对于开发是很是不利的,在iOS 10全新的推出了[UIApplication sharedApplication] openURL:nil options:nil completionHandler:^(BOOL success);有一个成功的回调block 能够进行监视。
使用改进后的SecKey API 而不是过期的 CDSA API。 安全传输API中再也不支持SSLv3, 建议大家尽快停用SHA1和3DES加密算法。
如今锁屏界面有了新的设计,建议咱们废弃之前的notificationCenterVibrancyEffect 改用widgetPrimaryVibrancyEffect或者widgetSecondaryVibrancyEffect,而且窗口的小部件可让你描述有多少东西可用,支持紧凑和扩展两种形态。
AVCaptureStillImageOutput废弃了, 用AVCapturePhotoOutput替换.
下面的写法会返回NO #define IsIOS7 ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]>=7) 由于substringToIndex:1 in SDK 'iOS 10.0'(Xcode 8) means SDK 'iOS 1.0'
CKDiscoverAllContactsOperation CKDiscoveredUserInfo CKDiscoverUserInfosOperation CKFetchRecordChangesOperation
initWithRecordType:predicate:options: initWithRecordType:predicate:subscriptionID:options: initWithZoneID:options: initWithZoneID:subscriptionID:options: zoneID recordType predicate subscriptionOptions CKSubscriptionOptions initWithCoder:
removeUbiquitousContentAndPersistentStoreAtURL:options:error: lock tryLock unlock metadataForPersistentStoreWithURL:error: setMetadata:forPersistentStoreOfType:URL:error: metadataForPersistentStoreOfType:URL:error: NSPersistentStoreUbiquitousTransitionType NSPersistentStoreDidImportUbiquitousContentChangesNotification setStoresFastSyncDetailsAtURL:forPersistentStore: syncWithClient:inBackground:handler:error:
ADBannerView ADInterstitialAd
uniformWithName:floatVector2: uniformWithName:floatVector3: uniformWithName:floatVector4: uniformWithName:floatMatrix2: uniformWithName:floatMatrix3: uniformWithName:floatMatrix4: initWithName:floatVector2: initWithName:floatVector3: initWithName:floatVector4: initWithName:floatMatrix2: initWithName:floatMatrix3: initWithName:floatMatrix4: floatVector2Value floatVector3Value floatVector4Value floatMatrix2Value floatMatrix3Value floatMatrix4Value
UILocalNotification UIMutableUserNotificationAction UIMutableUserNotificationCategory UIUserNotificationAction UIUserNotificationCategory UIUserNotificationSettings
handleActionWithIdentifier:forLocalNotification: handleActionWithIdentifier:forRemoteNotification: didReceiveLocalNotification:withCompletion: didReceiveRemoteNotification:withCompletion: WKExtensionDelegate didReceiveRemoteNotification: handleActionWithIdentifier:forRemoteNotification: