iOS10 新特性调研

iOS10 新特性调研_第1张图片
14749669832725.png

PushKit

iOS8 苹果新引入了名为PushKit的框架和一种新的push通知类型——VOIP Push。该push方式旨在提供区别于普通APNS Push的能力,通过这种push方式可以使app执行制定的代码。
PushKit中的VOIPPush,可以帮助我们提升voip应用的体验,优化VOIP应用的开发实现,降低VOIP应用的电量消耗。
苹果的目的是提供这样一种能力,可以让我们抛弃后台长连接的方案,也就是说应用程序通常不用维持和VOIP服务器的连接,在呼叫或者收到呼叫时,完成VOIP服务器的注册;当程序被杀死或者手机重启动时,都可以收到对方的来电,正常开展VOIP的业务。也就是说,我们当前可以利用它来优化VOIP的体验,增加接通率。

在iOS10之后,苹果不在支持原先的VOIP后台模式。因此从iOS10开始,我们需要将VOIP应用推送改到PushKit上,用苹果推荐的方式来对接VOIP应用。
(原话:"Legacy VoIP background mode is deprecated and no longer supported"

相关资料:

  • VoIP background mode no longer supported
  • pushkit实战总结

CallKit

CallKit框架(CallKit.framework)使得VoIP应用能与iPhone UI整合到一起,从而给用户带来更好的体验。使用这个框架来让用户在锁屏页面查看和接听打来的VoIP电话,并在Phone应用的个人收藏和最近通话视图中管理来自VoIP通话的联系人。

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

iOS10 新特性调研_第2张图片
14749668421951.jpg

CallKit 有以下两个主要的类,来完成与iOS系统的交互。
CXProvider可以将一些外来事件通知给系统:

  • Incoming call
  • Outgoing call connected
  • Call ended on remote side

CXCallController可以让系统收到App的一些Request,用户的action,内部的事件:

  • Start Outgoing call
  • Answer call
  • End call
iOS10 新特性调研_第3张图片
14749665158282.jpg

相关资料:

  • CallKit的使用介绍
  • https://zeropush.com/guide/guide-to-pushkit-and-voip

SiriKit

在特定领域提供服务的应用可以利用SiriKit来通过Siri提供这些服务。
SiriKit支持以下领域的服务:

  • VoIP calling
  • Messaging
  • Payments
  • Photo
  • Workouts
  • Ride booking
  • CarPlay (automotive vendors only)
  • Restaurant reservations (requires additional support from Apple)

要想使你的服务可用,需要使用Intents和Intents UI框架创建一个或多个应用扩展(app extensions)。和Siri的交互流程大概分为以下3步,可在相关资料中

iOS10 新特性调研_第4张图片
14749655893554.png

以上提到了一个新的知识 extension,其用于各个应用之间的整合和交互。不难发现,随着近年来 extension 开发的兴起,Apple 逐渐在从 app 是“用户体验的核心”这个理念中转移,变为用户应该也可以在通知中心,桌面挂件或者手表这样的地方完成必要交互。
iOS 10 中,Apple 为我们添加许多新的 extension 的新模板,主要为以下几个方面:

  • Call Directory
  • Intents
  • Intents UI
  • Messages
  • Notification Content
  • Notification Service
  • Sticker Pack

extension开发

相关资料:

  • SiriKit官方文档
  • http://www.jianshu.com/p/528ea6309131

通知中心 User Notifications

通知中心向来是 iOS 上的兵家必争之地。如何提供适时有效的通知,往往决定了用户活跃和留存的可能性。在 iOS 10 上,Apple 对通知进行了加强和革新。现在,为了更好地处理和管理通知,和本地及推送通知相关的 API 被封装到了全新的框架 UserNotifications.framework 中。在 iOS 10 中,开发者的服务器有机会在本地或者远程通知发送给用户之前再进行修改。

另外,在之前加入了 notification action 以及 text input 的基础上,iOS 10 又新增了为通知添加音频,图片,甚至视频的功能。现在,你的通知不仅仅是提醒用户回到应用的入口,更成为了一个展示应用内容,向用户传递多媒体信息的窗口。(copy from 喵大)

相关资料:

  • UserNotifications 框架解析
  • UserNotifications: 苹果官方文档 - 苹果官方视频1 - 苹果官方视频2 - 苹果官方视频3

MapKit(暂略)

HomeKit(暂略)

iMessage 和其他应用联动(暂略)

Wide Color

大部分图像框架贯穿整个系统,包括Core Graphics,Core Image,Metal,AVFoundation在内的框架极大的改善了对更加广泛的像素格式和宽色域色彩空间的支持。通过在整个图形堆栈(graphics stack)扩展这个行为,让设备支持更广泛的色彩显示变的前所未有的简单。此外,UIKit把使用新的扩展sRGB色彩空间变的标准化,使sRGB颜色和其它颜色的混合变的简单,更宽的色域显示没有显著的性能损失。

+ (UIColor *)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);

- (UIColor *)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);

UICollectionView新特性

iOS10中,增加了UICollectionViewCell的Pre-Fetching预加载的数据源接口。
同时,ScrollView中增加了UIRefreshController属性。

相关资料:

  • http://www.jianshu.com/p/e97780a24224

iOS10 适配问题Tips:

1.系统权限及相关设置

  • iOS10中访问安全隐私数据,必须添加相关描述。需要在info.plist文件中添加相应权限的说明,否则在iOS10上访问相关权限时会引起Crash。

2.系统中文字体变大

  • iOS10中中文的字体宽度发生了变化,一些固定frame的UI需要进行适配。

3.UIStatusBar方法过期

  • iOS10种UIStatusBar的一些方法已经过期,需要在项目中进行适配。

4.系统版本判断方法失效

  • 采用[[UIDevice currentDevice] systemVersion]方法获取正确的系统版本。

5.ATS问题

  • 2017年1月1日起,苹果不再允许我们通过修改NSAllowsArbitraryLoads来跳过ATS,将强制使用HTTPS。

6.UIColor 增加了新方法

  • iOS10之前我们采用RGB来设置颜色,iOS10中苹果官方推荐我们使用sRGB,因为其性能更佳且色彩丰富。

7.UITextField增加textContentType枚举

  • 该枚举可以指示文本输入区域所期望的语义意思。

8.UIScrollView 增加了 RefreshController

  • iOS10之后,只要继承了UIScrollView即支持了刷新功能,包括UITableView及UICollectionView。

9.苹果优化CollectionView

  • 苹果公司优化了CollectionView的实现,支持了数据的预加载及优化了Cell的加载逻辑。使得CollectionView更佳流畅。

10.iOS 10 ImagePickerController.cameraViewTransform问题

  • 自定义相机cameraViewTransform属性实效。可以通过监听AVCaptureSessionDidStartRunningNotification来解决,或者采用AVFoundation来实现。

参考文献

  • https://onevcat.com/2016/06/ios-10-sdk/
  • Apple iOS10 特性文档翻译

你可能感兴趣的:(iOS10 新特性调研)