iOS10新特性


1.1 SiriKit

所有第三方应用都可以用Siri,支持音频、视频、消息发送接收、搜索照片、预订行程、管理锻炼等

1.2 Proactive Suggestions 系统预先建议

背景就是iOS9的时候系统给予的主动建议

通过:Spolight搜索,Safari搜索,Handoff,或者siri建议。

在iOS10之后新增了,键盘QuickType建议,地图,车载娱乐,应用切换,siri交互,锁屏播放。eg:你正在一个应用里看一个酒店,可以使用mapitem属性保存正在查看的这个酒店的位置,然后你切换旅行或地图App时这个位置可以自动提供使用。

如果你需要这样利用系统来共享一个位置,那你需要指定这个位置的经纬度、地名、电话等属性来便于siri的直接调起。

1.3 Message App Extension

在 iOS 10 里面开发者可以给 Message.app 提供两种 App Extension,分别是可以提供一个表情包(没错,英文名就叫 Sticker Pack),和一个自定义的界面,用于表情搜索等

1.4 User Notifications 用户通知

iOS

10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifications.framework

来集中管理和使用 iOS 系统中通知的功能。 在 iOS 10 中,开发者的服务器有机会在本地或者远程通知发送给用户之前再进行修改。

在此基础上,Apple 还增加了撤回单条通知,更新已展示通知,中途修改通知内容,在通知中展示图片视频,自定义通知 UI

等一系列新功能,非常强大。

1.5 Speech Recognition 语音识别

IOS 10 引入Speech.framework用来支持语音识别, 在app中可以识别语音并转成文本, 语音来源可以是实时的也可以是录音。

1.6 Wide Color 广色域

包括Core Graphics,Core Image,Metal,AVFoundation在内的图像框架极大的改善了对更加广泛的像素格式和宽色域色彩空间的支持。

1.7 Adapting to the True Tone Display 真色调展示

真色调(True Tone)显示使用环境光传感器,可以做到配合当前环境的光线条件自动调节显示的颜色和强度。如果你的应用是阅读类,和环境中的白点保持一致对用户来说就是有益的。

1.8 App Search Enhancements 应用搜索增强功能

新的CSSearchQuery类支持搜索那些你用Core

Spotlight API指出的应用内内容。

使用这些API可以淘汰你应用中单独的搜索索引,以及更好的利用Spotlight强大的搜索技术,同时,匹配规则允许用户在不离开你应用的条件下搜索内容,就像他们在Mail,Messages和Notes中体验到的一样。

1.9 Widget Enhancements widget增强功能

iOS10引入了一个新的锁屏设计,新的锁屏现在会显示各种widget。

1.10 Apple Pay Enhancements

在iOS10中,用户可以从网页上,或通过Siri和地图的互动来使用Apple Pay进行简单和安全的支付。 对于开发者来说,iOS10引入了可以同时在iOS和watchOS上使用的新API,支持动态支付网络的能力,和新的沙盒测试环境。

1.11 Security and Privacy Enhancements

iOS10引入几个变化来帮助您提高代码的安全和维护用户数据的隐私性。 想了解更多,请查阅https://developer.apple.com/security/。

1.12 CallKit 来电拦截相关

CallKit框架(CallKit.framework)使得VoIP应用能与iPhone

UI整合到一起,从而给用户带来更好的体验。

使用这个框架来让用户在锁屏页面查看和接听打来的VoIP电话,并在Phone应用的个人收藏和最近通话视图中管理来自VoIP通话的联系人。

CallKit框架同样也引入了应用扩展(app

extensions),这个扩展可以进行呼叫拦截和来电识别。你可以创建一个应用扩展来将电话号码和名称关联起来,或是告诉系统什么样的号码需要被拦截。

1.13 News Publisher Enhancements

News Publisher使用Apple News Format来让发表设计精美的新闻、杂志、网页内容到Apple News变的简单。 从各大杂志或新闻机构这种独立出版商,到个人博客,任何人都可以注册。

1.14 Video Subscriber Account

iOS10引入了Video

Subscriber

Account框架(VideoSubscriberAccount.framework)来帮助应用支持流媒体认证或认证视频点播(也被称为TV

Everywhere)与他们的有线电视或卫星电视供应商认证。

对于那些用户注册一次就能解锁流媒体订阅服务的应用来说,使用这个框架中的API可以帮助你支持单一登录体验。

5. 需要关注的地方

1. UITabBarController 中的改进

在iOS

10之前,tabBarItem上的文字颜色,默认是蓝色,上面的新消息提醒数字badge

默认是红色的,未选中的TabBarItem的文字颜色默认是黑色的,我们修改的话,也只能修改它的默认颜色

,其它的就不能进行个性化定制,使用起来非常的不方便,iOS10之后我们可以轻松个性化定制了。

2. iOS10.0中字体跟随系统设置变化大小

在以前如果说我们想改变APP中程序的字体大小,我们只能自定义字体或者使用runtime进行处理,或者都得设置UIFont,非常的不方便,从iOS

10苹果官方允许我们自定义设置 代码:self.labels.adjustsFontForContentSizeCategory = YES;

3. UIViewPropertyAnimator属性动画器

那么在iOS

10之前,我们使用UIView 做动画效果或者自定义一些layer

的动画,如果开始了,一般无法进行停止操作更不能暂停操作,而且一些非常复杂的动画处理也比较麻烦,但是在iOS10,苹果推出了一个全新的APIUIViewPropertyAnimator,可供我们处理动画操作

4. UIColor 新增方法

在iOS10之前,UIColor中设置颜色只能通过RGB 来表示,在iOS原生还不支持#16进制写法,还得自己写分类去处理,我们知道RGB表示的颜色是优先的,而且也是不精准的,那么在iOS10中,苹果官方新增了colorWithDisplayP3Red方法

5. UIApplication对象中openUrl被废弃

在iOS

10.0以前的年代,我们要想使用应用程序去打开一个网页或者进行跳转,直接使用[[UIApplication

sharedApplication] openURL 方法就可以了,但是在iOS 10

已经被废弃了,因为使用这种方式,处理的结果我们不能拦截到也不能获取到,对于开发是非常不利的,在iOS

10全新的推出了[UIApplication sharedApplication] openURL:nil options:nil

completionHandler:^(BOOL success);有一个成功的回调block 可以进行监视。

6. CoreData提升了并发访问性能

7. 刷新控件(UIRefresh Control)

iOS系统自带的刷新控件支持所有的 UIScrollView 以及其子类,比如说 UICollectionView,UITableView。

8. GCD多线程支持创建私有队列

9. iOS10 对隐私权限的管理

比如访问的摄像头、麦克风等硬件,都需要提前请求应用权限、允许后才可以使用,或者现在要提前声明,虽然以往要求不严格。比如在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.

10. 证书签名

在Xcode 8中,代码签名错误的情况应该不会存在了。

在每一个targe中,你都可以在框中打勾来告诉Xcode让它来代表你管理代码签名。 对于新项目这个选项默认是打开的。

打勾以后,Xcode为你管理certificates, provisioning profiles和 application

identifiers。

11. Xib兼容问题

Xcode8上打开项目要小心,尤其是对于xib过程,在变动后可不要随意点保存,否则当你回头用Xcode7打开时时发现报错了,Xcode保存的xib在xcode7上是识别不了的, 如果你在Xcode8中打开或者xib文件,会弹出如下提示框, 忽视他

12. 运行时问题 Runtime Issues

这Xcode新特性,自动识别跟踪找到漏洞并且报告问题,

有些很难跟踪的bug,直到您的应用程序到了用户手中,也可能没有被发现。 Thread Sanitizer spots:新的线程污点清理器,

解决多线程情况下的资源竞争条件,数据的变化和其它相关线程的 bug View

Debugger:使用更新的带有更大的保真度和视觉精度检查UI约束问题的视图调试器 Memory

Debugger:可以用新的内存调试跟踪器跟踪发出的内存泄漏警报。

13.iOS 10之后的 app 在首次使用的时候,弹出请求用户授权访问网络的提示,在用户授权之前是没有数据的,直到用户授权之后,手动刷新之后才会有数据,但是这种体验有好也有坏,好处就是在用户授权之前是不会使用用户的网络的,不会浪费流量,坏处就是有时候这个提示不会弹出来,APP 就一直没有数据。

6. iOS 10 兼容适配点

1. iOS 10 对隐私权限的管理必须要改否则会crash

比如访问的摄像头、麦克风等硬件,都需要提前请求应用权限、允许后才可以使用,或者现在要提前声明,虽然以往要求不严格。比如在iOS10中访问通讯录时,强制必须在Info.plist中加入NSContactsUsageDescription等描述,否则应用会崩溃。崩溃日志:***Thisapp

has crashed because it attempted to access privacy-sensitivedatawithout

a usage description.Theapp'sInfo.plist must contain

anNSCameraUsageDescriptionkeywith a string value explaining to the user

how the app uses

thisdata.PhotoLibraryNSPhotoLibraryUsageDescriptionCameraNSCameraUsageDescriptionMicrophoneNSMicrophoneUsageDescriptionLocationNSLocationUsageDescriptionLocationWhenInUseNSLocationWhenInUseUsageDescriptionLocationAlwaysNSLocationAlwaysUsageDescriptionCalendarsNSCalendarsUsageDescriptionRemindersNSRemindersUsageDescriptionMotionNSMotionUsageDescriptionHealthUpdateNSHealthUpdateUsageDescriptionHealthShareNSHealthShareUsageDescriptionBluetoothPeripheralNSBluetoothPeripheralUsageDescription

2. Xib兼容问题

Xcode8上打开项目要小心,尤其是对于xib过程,在变动后可不要随意点保存,否则当你回头用Xcode7打开时时发现报错了,Xcode8保存的xib在xcode7上是识别不了的, 如果你在Xcode8中打开或者xib文件,会弹出如下提示框, 忽视他

3. UIApplication对象中openUrl被废弃不改也可以用

在iOS

10.0以前的年代,我们要想使用应用程序去打开一个网页或者进行跳转,直接使用[[UIApplication sharedApplication]

openURL方法就可以了,但是在iOS 10

已经被废弃了,因为使用这种方式,处理的结果我们不能拦截到也不能获取到,对于开发是非常不利的,在iOS

10全新的推出了[UIApplication sharedApplication] openURL:nil options:nil

completionHandler:^(BOOL success);有一个成功的回调block 可以进行监视。

4. 安全和保密性已联系盖瑞给安全团队检查

使用改进后的SecKey API 而不是过时的 CDSA API。 安全传输API中不再支持SSLv3, 建议你们尽快停用SHA1和3DES加密算法。

5. widget锁屏界面

现在锁屏界面有了新的设计,建议我们废弃以前的notificationCenterVibrancyEffect

改用widgetPrimaryVibrancyEffect或者widgetSecondaryVibrancyEffect,并且窗口的小部件可以让你描述有多少东西可用,支持紧凑和扩展两种形态。

6. AVFoundation不改也可以用

AVCaptureStillImageOutput废弃了, 用AVCapturePhotoOutput替换.

7. IOS版本检查

下面的写法会返回NO#defineIsIOS7

([[[[UIDevice currentDevice] systemVersion] substringToIndex:1]

intValue]>=7)因为substringToIndex:1inSDK'iOS 10.0'(Xcode8) means

SDK'iOS 1.0'

8. 废弃的API(不改也可以用)

CloudKit中废弃的

CKDiscoverAllContactsOperation CKDiscoveredUserInfo CKDiscoverUserInfosOperation CKFetchRecordChangesOperation

CKSubscription中废弃的

initWithRecordType:predicate:options:

initWithRecordType:predicate:subscriptionID:options:

initWithZoneID:options: initWithZoneID:subscriptionID:options: zoneID

recordType predicate subscriptionOptions CKSubscriptionOptions

initWithCoder:

NSPersistentStoreCoordinator中废弃的

removeUbiquitousContentAndPersistentStoreAtURL:options:error:

lock tryLock unlock metadataForPersistentStoreWithURL:error:

setMetadata:forPersistentStoreOfType:URL:error:

metadataForPersistentStoreOfType:URL:error:

NSPersistentStoreUbiquitousTransitionType

NSPersistentStoreDidImportUbiquitousContentChangesNotification

setStoresFastSyncDetailsAtURL:forPersistentStore:

syncWithClient:inBackground:handler:error:

UIViewController中废弃的

ADBannerView ADInterstitialAd

SKUniform中废弃的

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

UIKit中废弃的

UILocalNotification

UIMutableUserNotificationAction UIMutableUserNotificationCategory

UIUserNotificationAction UIUserNotificationCategory

UIUserNotificationSettings

WatchKit中废弃的

handleActionWithIdentifier:forLocalNotification:

handleActionWithIdentifier:forRemoteNotification:

didReceiveLocalNotification:withCompletion:

didReceiveRemoteNotification:withCompletion: WKExtensionDelegate

didReceiveRemoteNotification:

handleActionWithIdentifier:forRemoteNotification:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容