iOS 9 新特性

时间:2021-08-20 07:46:46

这篇文章介绍了iOS9开发相关的简介,现在发布的设备都会搭载iOS9。这篇文章也列出了详细描述新特性的文章。

iPad多线程增强

iOS9使用Slider Over, Split View, Picture in Picture增强了iPad上的多线程用户体验。Slide Over特性可以让用户启动第二个APP。Split View属性可以让用户在iPad Air2上使用两个app。Picture in Picture(PiP)可以在其他app的windows上显示一个悬浮框来看视频。

用户才能决定什么时候在屏幕上显示两个app。开发者不能控制。虽然Split View和Slide Over是由用户控制的,开发者仍然需要做不少事情来保障多线程体验。

  • 最关键的是app需要高效的使用系统资源,这样在和其他app分享系统的时候才能更好的运行。在低内存的情况下,系统会退出占用内存多的app。
  • 如果还没有适配,确保使用size classes,这样app在分屏时可以很好的展示。

在Split View和Slide Over中, 由用户来控制是否使用PiP来在另一个运行中的app上显示视频。如果播放视频不是你的主要功能话,就不需要为PiP体验做额外工作。

要体验Picture in Picture的话,使用AVKit或者AV Foundation APIs。Media Player framework中定义的播放视频的API在iOS9中已经弃用了,他们也不支持PiP。

搜索

iOS9中的搜索给用户提供了一种访问信息的新的方式, 当你的内容可以被搜索时, 用户可以通过Spotlight, Safari搜索结果,Handoff, 以及Siri 来访问你app中的内容。使用搜索相关的API, 你可以决定哪些内容被索引,哪些内容显示在搜索结果中,以及用户点击后跳转到app或网站的什么地方。

隐私保护是iOS9搜索的一个基本属性。为了在提供一个好的搜索体验的同时保护用户隐私,iOS9做了下面的事

  • 私人的设备端索引。每个设备有一个私人的索引信息,他们不会被分享到苹果或同步到其他设备。当你在用户设备上建立索引时,只有那个用户会看到搜索结果。
  • 苹果服务器端索引。服务端索引只存储公开的内容以及你网站上合适的内容。

iOS9提供了下面的API来帮助你搜索内容:

  • NSUSerActivity类提供了一些新方法和属性,来让你创建内容。所有app都可以使用USUserActivity API来给用户创建有用的内容。
  • Core Spotlight framework提供了API在设备端添加app相关内容的索引并且可以跳转到app指定界面。
  • Web markup可以让网页相关的内容被搜索到,可以帮助你增强用户体验。
  • 全局链接可以替换HTTP或HTTPS链接。全局的链接对于所有用户的适用。如果用户安装了app,链接直接把用户带进app。如果没有装app,这个链接会在safari中打开网站。

游戏

iOS9做了一些技术上的增强让实现游戏的图形和声音属性更便捷。用户可以使用上层库来快速开发,也可以使用底层库来自己控制GPU。

GameplayKit

GameplayKit(Gameplaykit.framword)提供了创建游戏的基础技术。使用Gameplaykit结合上层的图形引擎(比如SceneKit活着SpriteKit)就可以完成一个游戏了。这个框架提供了模块化的结构来创造游戏。

  • 随即工具
  • Entiey-更好的功用游戏里的组件
  • 状态机-让代码更简洁

GameplayKit也包含了常用的游戏算法,这样你可以少花点时间在算法上,有更多的时间在游戏机制上。比如GameplayKit中下面的一些算法:

  • 在回合对战游戏中智能的计算最大最小值
  • 自动模拟移动行为
  • 规则系统:基于数据的游戏逻辑,模糊推理,以及行为。

Model I/O

Model I/O(ModelIO.framework)提供了一个系统级别的3D模型资源。可以使用这个框架做很多事情,比如:

  • 导入网格数据,材料描述,灯光和摄像头设置,以及其他流行软件或游戏引擎生成的数据文件。
  • 处理或创建以下数据:把灯光信息放入网格,或者创建天空的纹理。
  • 和MetalKit, GLKit,SceneKit API协作工作,高效的加载数据到GPU渲染
  • 导出或产生多种格式的数据

MetalKit

MetalKit(MetalKit.framework)提供了很多方法和类来减少创建Metal app的难度。MetalKit支持下面三块的开发:

  • 纹理加载帮助你简单的从各种资源加载纹理。支持常用的PNG和JPEG,同时也支持KTX和PVR。
  • 模型处理提供了基于Metal的方法让和模型交互更容易。也可以使用这些方法在模型和网格之间传递数据。
  • 界面管理提供了Metal界面的标准实现。这样可以大量节省图形渲染的代码

Metal Performance Shaders

Metal Performance Shaders(MetalPerformanceShaders.framework)提供了图形计算方法,在Metal app中使用起来非常方便。它会高效利用支持Metal的iOS GPU。

它会使配所有支持的硬件,不需要为特殊的iOS GPU单独写代码。MetalPerformanceShader对象可以与Metal app无缝衔接。

这个框架同时也提供了下面的功能:

  • 高斯模糊-由MPSImageGaussianBlur类提供
  • 图片直方图-由MPSImageHistogram类提供
  • sobel边缘检测-由MPSImageSobel类提供

Metal新功能

Metal(Metal.framework)增加了一些新功能来让app的图形渲染更佳高效。包括以下功能:

  • 增强了Metal Shading语言以及Metail标准库
  • 计算着色的范围更广
  • 增加了一些纹理模版
  • 增强阴影质量

SceneKit新功能

SceneKit(SceneKit.framework)在iOS9中的新功能,包括:

  • 支持Metal渲染。可以查看SCNView和SCNSceneRenderer类
  • Xcode中添加了新的Scene编辑器。可以更快的创建游戏。
  • 位置音频。使用SCNAudioPlayer和SCNNode类来添加音频来根据位置自动播放。

SpriteKit新功能

SpriteKit(SpriteKit.framework)在iOS9中的新功能,包括:

  • 支持Metal渲染。在支持Metal的设备上,会自动使用metal渲染,就算是使用OpenGL ES。
  • Xcode中加强了场景编辑器以及新的动作编辑器。可以更快创建游戏。
  • 相机焦点(查看SKCameraNode对象)可以更容易的创建可滚动的游戏。
  • 位置音频。

App Thinning

App thining自动的帮助你为不同的平台开发以及发布优化过的安装包。App thinning包括下面的内容:

  • Slicing。App Store只分发安装必须的内容
  • 按需资源。app的附加资源保存在appstore上,当需要的时候异步的下载资源。
  • Bitcode.app提交的时候, 会被编译为64位和32位,appstore分发的时候分发对应版本。

支持从右到左的语言

iOS9支持从右到左的语言,让提供一个翻转的界面更容易。

  • 标准的UIKit控件自动翻转从右到左的内容。
  • UIView定义了一些属性让你可以制定如何显示从右到左的内容。
  • UIImage添加了imageFlippedForRightToLeftLayoutDirection方法,让用代码翻转图片更容易。

APP传输安全

APP传输安全(ATS)增加了app和后台安全连接。ATS防止意外泄漏,提供了安全方面的默认行为,也很好实现。在iOS9和OS X v10.11之后默认打开。你应该尽快实现ATS,不管是创建新APP或者更新APP。

如果是开发新app,应该只使用HTTPS。如果是已有app,现在应该尽量使用HTTPS,并且计划尽快迁移其他接口。另外,使用上层API通讯需要使用TLS 1.2加密。如果不实用这种连接,会抛出异常。如果app需要请求不安全的域名,需要在app的Info.plist中申明。

Extension Points

iOS9提供了一些新的插件点(插件点定义了创建插件时,那个区域的使用策略以及提供的API)。如下:

  • 网络插件:
    • 使用Packet Tunnel Provider插件点来实现客户端的VPN协议通道。
    • 使用App Proxy Provider插件点来实现客户端自定义的网络协议。
    • 使用Filter Data Provider和Filter Control Provider插件点来实现动态的,基于设备的内容过滤。
    • 每个网络插件点都需要苹果的特殊许可,
  • Safari插件
    • 使用分享链接插件来让用户在Safari的共享链接中查看你的内容。
    • 使用屏蔽内容插件来在用户使用Safari浏览网页时屏蔽内容。
  • 维护索引插件可以不打开app就重新索引app的数据
  • 音频插件让你的app可以提供音乐,音效,生成声音。这个插件点包含了一个完成的音频插件模块并且可以在appstore上卖音乐。

通讯录以及通讯录UI

iOS9提供了Contacts.framework和ContactsUI.framework。他们提供了基于对象的实现。可以替换Address BookheAddress Book UI framework。

手表通讯

手表通讯框架(WatchConnectivity.framework)提供了iPhone和配对的手表之间的双向通讯。使用这个框架来对应iOS app的界面和手表中的界面。这个框架在两个app都运行时支持实时消息,其他情况支持后台消息。

钥匙串

钥匙串提供了更过保护项以及一个新的加密类型。

Swift加强

其他框架更新

AV Foundation Framework

AV Foundation(AVFoundation.framework)增加了AVSpeechSynthesisVoice API可以让你指定声音作为标识。可以使用name和quality属性来获取声音信息。

AVKit Framework

AVKit(AVKit.framework)包括AVPictureInPictureController和AVPlayerViewController类,可以帮助你实现画中画。

CloundKit Framework

如果有CloudKit app,可以使用CloudKit web service或者CloudKit JS,一个JavaScript库,提供了访问app中数据的网页接口。前提是你的数据库定义了网页接口的schema。

Foundation Framework

Foundation(Foundation.framework)包含下面的加强:

  • 按需加载NSBundle资源的API
  • 支持Strings文件
  • 增强NSProcessInfo

HealthKit Framework

HealthKit(HealthKit.framework)包含下面的增强:

  • 支持新的追踪领域。
  • 可以批量删除记录。

Local Authentication Framework

  • 可以获得当前注册的手指信息,这样在注册或删除手指信息时可以做相应的处理。
  • 支持取消用户用密码认证的提示
  • 支持钥匙串访问控制,调用钥匙串时进行身份认证
  • 支持重用TouchID匹配。

MapKit Framework

  • MapKit支持查询公交站以及公交导航
  • 地图支持3D模式
  • Annotations可以完全自定义
  • Mapkit的搜索结果以及CLGeocoder可以为结果提供时区

PassKit Framework

  • iOS9中, 苹果支付支持存储储蓄卡和信用卡。
  • 在app中可以直接添加卡片到苹果支付。

Safari Service Framework

SFSafariViewController可以在app中显示网页内容。它和Safari中的网站共享数据,拥有Safari的很多属性,比如自动填充。和Safari不同的是,SFSafariViewController界面定制的职能显示一个界面,有一个完成按钮可以把用户带回到app。

如果app只是显示网页内容,但是不需要定制内容,可以考虑把WKWebView或UIWebView换成SFSafariViewController。

UIKitFramework

  • UIStackView类,可以帮助你管理一组子界面,他们自动水平活着竖直排列。
  • UIView,NSLayoutANchor和NSLayoutDimension中新的布局锚点(比如leadingAnchor和widthAnchor),让布局更容易。
  • 新的布局引导帮助你更好的布局界面以及定义界面如何绘制。
  • 新的UIApplicationDelegate可以用来打开或修改文档,不需要拷贝以前的文档。要支持这个功能的话, app需要在Info.plist中把LSSupportsOpeningDocumentsInPlace设置为YES。
  • UITextInputAssistantItem类,可以帮助你放置快捷按钮。
  • 增强了Touch事件。
  • 增强了UIKit,比如支持非矩形的边框,UIFieldBehavior类,支持多种区域类型,也可以自定义。
  • UIUserNotificationAction的新behavior属性,可以支持在通知中输入文字。
  • 新的NSDataAsset类,可以更容易的从内存或者图形设备中获取数据。
  • 所有标准的UIKit控件都支持从右到左的语言。另外,导航,手势,collection,table的布局都支持翻转。

弃用的API

下面的API已弃用。

  • Address Book和Address Book UI framework。使用Contacts和Contacts UI framework替代
  • Foundation框架中的NSURLConnection API。 使用NSURLSessionAPI替代