iOS 版本更新摘要(四)iOS 9.x_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > iOS 版本更新摘要(四)iOS 9.x

iOS 版本更新摘要(四)iOS 9.x

 2017/12/5 18:21:48  akforsure  程序员俱乐部  我要评论(0)
  • 摘要:[What'sNewiniOS9.x](https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-SW11"What'sNewiniOS9")####iOS9.0#MultitaskingEnhancementsforiPadiOS9在SlideOver,SplitView
  • 标签:iOS 版本

 [What's New in iOS 9.x](https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-SW11 "What's New in iOS 9")

 

####iOS 9.0

#Multitasking Enhancements for iPad

 

  iOS 9 在 Slide Over, Split View, and Picture in Picture 这几个方面对 iPad 进行了多任务处理的加强。Slide Over (分割)属性可以让你选到次要 app ,并且快速的与它交互。 Split View (分屏)属性让你可以在 iPad Air 2 的一个屏幕上同时操作两个 app。Picture in Picture (画中画)属性可以让你在一个全局的悬浮框中看视频,悬浮于别的 app 页面上层。

    

  用户自己决定什么时候使用分屏工作,而你一无所知。尽管如此,你还是要做很多事情来给用户更好的体验:

    1. 你的 app 需要有效的运行,更好的和其他运行的 app 分享系统资源。内存有压力时,系统会优先杀掉消耗内存较多的。至于如何开发出高效的 iOS Apps 你可以看 [*Energy Efficiency Guide for iOS Apps*](https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/index.html#//apple_ref/doc/uid/TP40015243)

    2. 如果你的 app 还没做好准备,那你最少要适配一下 Size Classes ,让你的 app 在分屏时好看一些

 

class="Apple-tab-span">   更多关于如何应对 Slide Over 和 Split View 的内容请看 [*Adopting Multitasking Enhancements on iPad*](https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/index.html#//apple_ref/doc/uid/TP40015145)

 

  和 Slide Over 和 Split View 一样,用户随时都能根据自己的喜好去操作 PiP 中的视频。这时,如果你有播放视频功能,你啥都不用改,但是如果你有的话,你需要适配 PiP。你可以用 AVKit 或者 AV Foundation APIs,因为 Media Player framework 里面回放的 API 在 iOS 9 中不支持 PiP,而且还被废弃了。 更多请参考 [* Picture in Picture Quick Start *](https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForPictureInPicture.html#//apple_ref/doc/uid/TP40015145-CH14)

 

#3D Touch

  

  3D Touch 给了 iOS 9 用户提供了一个新维度的交互方式。在支持该功能的设备上,你可以在手机主页面的 app icon 上按压触发指定的功能。用户可以用不同的压力来预览一个条目的内容、打开一个单独的页面并进行相关操作。

  iOS 9 提供了以下的 3D Touch 的 API:

  1. 主屏上的快速操作 API 用来给你的 app 添加用户可能或确定使用的快捷方式。(UIApplicationShortcut 的 API)

  2. UIKit 的 Peek 和 Pop API 让你可以轻松的给用户提供更多额外的内容(参考 UIViewControllerPreviewing, UIViewControllerPreviewingDelegate, 和 UIViewController 中新的 APIs)。使用 peek API 你可以提供一个压力操作替换原有的点击方式

  3. WebView 也支持 peek & pop API,你可以用它预览 HTML 内容(WKWebView)

  4. UITouch 里面的 force 属性让你可以自定义基于 force touch 的交互

 

  不管你是否用了 3D Touch 的 API,你都要在运行时判断是否支持 3D Touch。API:[*Adopting 3D Touch on iPhone*](https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/Adopting3DTouchOniPhone/index.html#//apple_ref/doc/uid/TP40016543)demo:[*ApplicationShortcuts: Using UIApplicationShortcutItem*](https://developer.apple.com/library/content/samplecode/ApplicationShortcuts/Introduction/Intro.html#//apple_ref/doc/uid/TP40016545),[*ViewControllerPreviews: Using the UIViewController previewing APIs*](https://developer.apple.com/library/content/samplecode/ViewControllerPreviews/Introduction/Intro.html#//apple_ref/doc/uid/TP40016546)。

 

#Serach

 

  iOS 9 的搜索给用户提供了全新的获取 app 内部信息的途径,即使他还没安装 app。当你将你的内容设置为可以搜索,用户可以直通过 SpotLight、Safari搜索结果、Handoff 以及 Siri 建议应用这些渠道,直接访问你 app 深处的内容。使用搜索相关的 API ,你可以决定在哪些内容上加索引、哪些信息可以放在搜索结果里以及用户点击搜索结果(from app or website)后可以重定向到哪里。

 

  集成 iOS 9 的搜索是比较简单的:你不需要任何搜索相关的经验;很多开发者发现只要几个小时就能配置好。想知道如何配置搜索的话,参考[*App Search Programming Guide*](https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/index.html#//apple_ref/doc/uid/TP40016308)。

 

  隐私是搜索功能一个重要的属性。为了给用户很好的搜索体验时,保护他们的隐私,iOS 9 给出了如下的索引方式:

  1. 一个私有的基于设备的索引:每个设备都有一个私有的索引库,这些信息不会给 Apple ,也不会同步给其他设备。当你标记一个用户的私有设备索引时,只有这个用户才能在搜索结果中见到他

  2. Apple 服务端的索引:服务端的索引仅仅存储你在网站上标记的公开数据

 

  iOS 9 提供了一下的 APIs 帮助你设置搜索:

  1. 当用户操作 app 查看或创建内容时,NSUserActivity 包含了很多新的方法和属性来帮助你设置索引。每个 app 都可以使用 NSUserActivity APIs 来给用户提供可用的信息

  2. CoreSpotlight.framework 提供了用于添加基于设备的 app 特定内容索引以及设置深度 app 内容链接的 API。[*Core Spotlight Framework Reference*](https://developer.apple.com/documentation/corespotlight)

  3. Web 的标记让你可以关联网站的内容到搜索中,以丰富搜索结果。[*Mark Up Web Content*](https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/WebContent.html#//apple_ref/doc/uid/TP40016308-CH8) 

  除此之外,添加一个 Smart App Banner,可以让用户更容易的链接到你的 app [*Promoting Apps with Smart App Banners*](https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html#//apple_ref/doc/uid/TP40002051-CH6)

  4. 通用链接使用标准的 https/http 链接代替 URLs schmes。这个链接在用户安装 app 时会直接进入 app;没有安装时会用 Safari 打开你的网页。参考[*Support Universal Links*](https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12)

 

#Gaming

  

  iOS 9 包含了很多新的技术,帮你提升游戏的画质和音效。不管是 frameworks 里面的 APIs 还是 底层的 APIs,都可以用来释放 GPU 的力量。

 

###GameplayKit

 

  GameplayKit.framework 提供了很多构建游戏的基础技术。使用 GameplayKit 开发一些游戏机制,然后用任意一个上层引擎去合并它,构成一个完整的游戏。这个 framework 提供了构建游戏的模块化基础组建,包括:

  1. 随机工具,用于增加游戏的不可预知性且不影响测试

  2. 实体系统,使游戏代码复用性更好

  3. 状态机,用于拆解复杂的代码

 

  GameplayKit 也包含了一些基本的算法。所以你会省读书学习的时间,使用这些时间去做好你独有的游戏。下面列出一些标准的算法接口

  1. 一种小型的人工智能,用于敌对的回合制游戏

  2. 一个代理模型,描述高级目标的自动移动行为(寻路功能咯)

  3. 规则系统用于,建立数据驱动的游戏逻辑、模糊推理和紧急行为

 

  参考[*GameplayKit Programming Guide*](https://developer.apple.com/library/content/documentation/General/Conceptual/GameplayKit_Guide/index.html#//apple_ref/doc/uid/TP40015172),[*GameplayKit Framework Reference*](https://developer.apple.com/documentation/gameplaykit)。

 

###Model I/O

 

  ModelIO.framework 提供了一个系统级别的 3D 模型的素材和依赖资源库。你可以用用它来完成以下的任务:

  1. 导入网格数据、材质描述、光影、相机效果,以及来源于主流软件和引擎其他场景相关信息

  2. 处理生成这些数据:烘焙一个网格或创建一个天空纹理

  3. 与 MetalKit, GLKit, 或者 SceneKit APIs 一起,有效的将资源文件加载到 GPU 缓冲区进行渲染

  4. 导出处理的或者生成的资源数据为任意一种文件格式

 

  参考[*ModelIO Framework Reference*](https://developer.apple.com/documentation/modelio)。

 

###MetalKit

 

  MetalKit.framework 提供了一系列实用的方法和类,用来减少开发一个 Metal app 的工作量。MetalKit 在这两个方面给了开发支持:

  1. 纹理加载方面:帮助你的 app 轻松做到异步加载纹理。不仅支持普通的 PNG、JPEG,特殊的纹理格式也支持,例如 KTX 和 PVR

  2. 模型处理方面:提供了 Metal 特有的方法,让你可以更好的使用 Model I/O 的接口。使用高度优化的方法和对象在 Model I/O 网格 和 Metal 缓冲区之间传输数据

  3. 页面管理方面:页面管理器给了一个标准的 Metal view 的实现。这大大减少了图形渲染 app 的开发时间

 

  参考[*MetalKit Framework Reference*](https://developer.apple.com/documentation/metalkit),[*Metal Programming Guide*](https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40014221)。

 

###Metal Performance Shaders

 

  MetalPerformanceShaders.framework 提供了高度优化的计算和图形着色器,这些都为高效集成到你的 app 中而设计。这些同步数据着色器都根据支持 Metal 的 iOS 设备进行了调整。

 

  使用 MetalPerformanceShaders.framework 中的了类,构建支持所有设备的性能最优的着色器,而不需要针对特定 iOS 设备改动你的代码。MetalPerformanceShader 对象可以无缝的适配你的 app,包括可以被任何使用 Metal 资源的对象(比如缓冲区和纹理)。

 

  通用的 MetalPerformanceShaders.framework 提供的着色器如下:

  1. Gaussian blur(高斯模糊) - MPSImageGaussianBlur

  2. Image histogram(图像直方图) - MPSImageHistogram

  3. Sobel edge detection(索贝尔边缘检测) - MPSImageSobel

 

###New Features in Metal

 

  Metal.framework 加入了一些新的特性,是你的图形渲染 app 看上去更好,运行也更有效。如下:

  1. 改进了 Metal Shading Language 和 Metal Standard Library

  2. 计算着色器现在可以写入到更大的像素格式

  3. 新增了一些私有的、深度的模版材质与 OS X 保持一致

  4. 为改善阴影质量,增加了深度夹紧和前、后向的模板参考值

 

###New Features in SceneKit

 

  SceneKit.framework 为 iOS 9 增加了以下特性:

  1. Metal 渲染的支持:[SCNView](https://developer.apple.com/documentation/scenekit/scnview),[SCNSceneRenderer](https://developer.apple.com/documentation/scenekit/scnscenerenderer)支持对应机型高性能的 Metal 渲染

  2. Xcode 新增了一种场景编辑器:使用 Xcode 可以使用很少的代码和时间来创建游戏和支持 3D 交互 app。demo [*Fox: Building a SceneKit Game with the Xcode Scene Editor*](https://developer.apple.com/library/content/samplecode/Fox/Introduction/Intro.html#//apple_ref/doc/uid/TP40016154)

  3. 位置音效:使用[SCNAudioPlayer](https://developer.apple.com/documentation/scenekit/scnaudioplayer),[SCNNode](https://developer.apple.com/documentation/scenekit/scnnode)可以添加空间音效,并跟踪听者的位置自动调整

 

###New Features in SpriteKit

 

  SpriteKit.framework 在 iOS 9 增加了以下功能:

  1. Metal 渲染的支持:在有 Metal 设备上,支持对应机型高性能的 Metal 渲染,即使你用的是自定义的 OpenGL ES 的着色器

  2. Xcode 的场景编辑器进行了提升,顺带家了一个新的动作编辑器。可以用更少的代码和时间来构建游戏和 2D App [*DemoBots: Building a Cross Platform Game with SpriteKit and GameplayKit*](https://developer.apple.com/library/content/samplecode/DemoBots/Introduction/Intro.html#//apple_ref/doc/uid/TP40015179)

  3. 相机节点:使用这个可以轻易的做出滚动类的游戏。仅需将一个相机节点加入到场景的属性中就好了[*SKCameraNode*](https://developer.apple.com/documentation/spritekit/skcameranode)

  4. 位置音效:可以给场景添加空间音效,并跟踪听者的位置自动调整 [*SKAudioNode Class Reference*](https://developer.apple.com/documentation/spritekit/skaudionode)

 

#App Thinning

 

  app 瘦身让你可以开发目标平台的 app 并且在安装的时候自动给用户一个最合适的包。这个优化包括以下方面:

  1. 碎片化:app 内的插图与资源文件都可以按照对应的平台进行提供,前提是 App Store app

  2. 按需加载:app 可以不一次性下载全部的内容。iTunes App Store 会部署主机,用来放置你按需加载的内容。这个加载安装支持异步(ps:如果是企业版的可以放在自己的 https 的服务器下)

  3. bitcode:使用 bitcode 编译后 ,App Store 会对你上传的包再次编译,使之生成 32 位和 64 位的两套,以供对应的设备下载

 

  参考[*App Thinning*](https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html#//apple_ref/doc/uid/TP40012582-CH35)

 

#Support for Right-to-Left Languages

 

  iOS 9 全面支持从右到左布局。这让你更容易的提供一个反向的界面:

  1. UIKit 标准库的控件自动支持反向内容布局

  2. UIView 定义了对应的特殊化的语义,你可以自行控制哪些 view 的内容支持反转

  3. UIImage 新增了 imageFlippedForRightToLeftLayoutDirection 方法,用于在代码中适配反向的内容

  

##App Transport Security

 

  ATS 这个是用于保证 app 与后端交互的安全的。ATS 防止意外的信息暴露,提供基础的安全服务,适配也很简单(iOS 9 and OS X v10.11 +)

 

  如果你正在开发 app 你需要使用HTTPS,如果你的 app 已经发布了。你需要尽快制定一个计划来支持HTTPS。此外,你与上层 API 交互时,需要使用 TLS 1.2 进行加密。如果你还没打算处理 ATS,你需要在你的 info.plist 给你的请求加入白名单。

 

##Extension Points

 

  iOS 9 新增了一系列扩展点(扩展点是用来给 app 的扩展应用提供使用协议和相关 APIs 的)

  1. Network extension points

    1.1 包隧道工具扩展点:可以用它定义 VPN 客户端的隧道协议

    1.2 app 代理工具扩展点:可以用它自定义透明的客户端网络代理协议

    1.3 数据过滤和数据控制工具扩展点:可以用它动态的在设备上过滤内容

  2. Safari extension points

    2.1 Safari 分享链接扩展点:允许用户在 Safari 分享链接中看到你的内容

    2.2 Safari 内容屏蔽扩展点:你可以给 Safari 一个屏蔽掉列表,当用户访问列表内的内容时,将会被屏蔽

  3. Index Maintenance extension point 支持在不打开 app 的情况下维护 app 的数据索引

  4. Audio Unit extension point 允许你的 app 提供乐器、音效、声场以及更多的供其他 app(Audio Unit app)使用功能。这个扩展点也提供了一个完整的插件模型,让你的 Audio Units 可以在 App Store 上售卖

 

  [*App Extension Programming Guide*](https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/index.html#//apple_ref/doc/uid/TP40014214)

 

#Contacts and Contacts UI

   

  iOS 9 加入了 Contacts.framework 和 ContactsUI.framework,这两个用于替换现有的 Address Book 和 Address Book UI frameworks。[*Contacts Framework Reference*](https://developer.apple.com/documentation/contacts)

 

#Watch Connectivity

 

  WatchConnectivity.framework 提供了两种方式用于 iPhone 与其配套的 Watch 上的对应 app 进行通讯。这个 framework 支持两种方式,前台即时通讯和后台异步通讯。[*Watch Connectivity Framework Reference*](https://developer.apple.com/documentation/watchconnectivity)

 

#Keychain

 

  钥匙串提供了更多保护选项和一种新的独立持有的加密密钥。以下:

  1. 新的访问权限名单,让你可以创建仅仅基于 Touch ID 或密码的访问限制

  2. 新的 Touch ID 访问权限可以通过在钥匙串中加入或删除指纹来控制

  3. 支持 app 使用访问权限中的 Application Password 的选项,自主提供加密熵

  4. 支持上下文认证,也就是说你可以单独从保密条目中调起一个认证

  5. 支持使用 kSecAttrTokenIDSecureEnclave 属性进行密钥生成和独立加密熵生成。注意,这些密钥可以被访问权限名单所支持的限制进行控制

 

##Swift Enhancements

 

  学习新的 Swift,参考[*Swift Language*](https://developer.apple.com/library/content/documentation/Xcode/Conceptual/WhatsNewXcode-Archive/Articles/xcode_7_0.html#//apple_ref/doc/uid/TP40015242-SW2)

 

#Additional Framework Changes

 

  iOS 9 在以下 frameworks 中有了很多提升:

 

###AV Foundation Framework

 

  AVFoundation.framework 新增了 AVSpeechSynthesisVoice 的 API,可以让你通过 id 判断音频,而不是语言。你也可以使用 name 和 quality 两个属性来获得音频的信息。

 

###AVKit Framework

 

  AVKit.framework 加入了 AVPictureInPictureController 和 AVPlayerViewController,用于帮助你实现画中画功能。

 

###CloudKit Framework

 

  如果你有 CloudKit 的 app,你可以使用 CloudKit 的 web 服务或者 CloudKit JS(一个 js 的库)提供一个网页版的界面,使用户在你的 app 中访问 Cloud 中同样的数据。你必须为你的数据库设置 schema,给已经创建的网页界面提供获取数据、创建数据、更新数据和删除记录、空间和订阅功能。[*CloudKit JS Reference*](https://developer.apple.com/documentation/cloudkitjs),[*CloudKit Web Services Reference*](https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/CloudKitWebServicesReference/index.html#//apple_ref/doc/uid/TP40015240),[*CloudKit Catalog: An Introduction to CloudKit (Cocoa and JavaScript)*](https://developer.apple.com/library/content/samplecode/CloudAtlas/Introduction/Intro.html#//apple_ref/doc/uid/TP40014599)

 

###Foundation Framework

 

  Foundation.framework 有了以下的加强:

  1. 按需下载的 APIs

  2. 字符文件对上下文可变宽字符串的支持

  3. NSProcessInfo 用于电源和热量管理的 APIs

 

###HealthKit Framework

 

  HealthKit.framework 有以下的增强:

  1. 新增对生殖健康和紫外线系数的追踪选项

  2. 支持删除条目和已删除条目的跟踪,参考 HKDeletedObject, HKAnchoredObjectQuery, and the deleteObjects:withCompletion: and deleteObjectsOfType:predicate:withCompletion: methods in [HKHealthStore Class Reference](https://developer.apple.com/documentation/healthkit/hkhealthstore)

 

###Local Authentication Framework

 

  LocalAuthentication.framework 新增了一下内容:

  1. 可以获得当前登记的指纹;因此,指纹的增删对 app 的动作会有一些影响

  2. 支持在代码层取消用户提示

  3. 支持对钥匙串权限名单以及上下文权限的接入

  4. 支持 Touch ID 匹配的复用;用于手机解锁的指纹可以在 evaluateAccessControl: 和 evaluatePolicy:localizedReason:reply: 中使用

 

###MapKit Framework

 

  MapKit.framework 新增了以下功能以提供更好的用户体验:

  1. 支持查询ETA信息(预计到达、离开时间)以及在地图加入相应的标注

  2. 支持 3D 城市观光模式

  3. 动画可以完全自定义

  4. MapKit 和 CLGeocoder 的搜索结果可以根据时区筛选

 

###PassKit Framework

 

  PassKit.framework 加入了很多用户增强 Apple Pay 的支持。特别是

  1. 在 iOS 9 中 Apple Pay 支持发现卡、商店借记卡和其他信用卡[*PKPaymentRequest Class Reference*](https://developer.apple.com/documentation/passkit/pkpaymentrequest)

  2. 卡的发行机构和支付公司可以在它们自己的 app 中将卡直接添加到 Apple Pay[*PKAddPaymentPassViewController Class Reference*](https://developer.apple.com/documentation/passkit/pkaddpaymentpassviewcontroller)

 

###Safari Services Framework

 

  SafariServices.framework 有了以下的更新:

  SFSafariViewController 可以在你 app 中用于展示 web 内容。它和 Safari 共享 cookie 和站点数据,也有 Safari 的其他优秀属性(Safari AutoFill and Safari Reader)。和 Safari 不一样,SFSafariViewController 的 UI 就是为了展示单页的,上面有个完成按钮,用于点击返回你的 app。

 

  如果你的 app 需要展示 web 内容,并且不需要自定义。你可以用 SFSafariViewController 替换 WKWebView 或者 UIWebView 的页面。

 

###UIKit Framework

 

  UIKit.framework 包括了以下的更新内容:

  1. UIStackView 用于维护当前页面的子页面,控制它们的垂直或水平布局

  2. 新的约束方式支持锚点布局,UIView 的 (leadingAnchor & widthAnchor)以及 NSLayoutAnchor & NSLayoutDimension,都让你更容易的布局

  3. 你的布局指导,让你更容易的适配好页面内容。参考[*UILayoutGuide*](https://developer.apple.com/documentation/uikit/uilayoutguide)

  4. AppDelegate 里面新增了文件打开和修改(针对的是其他 app 共享的文件)直接操作方法,而不是操作备份。这个可以在 plist 里面设置 LSSupportsOpeningDocumentsInPlace 属性来开关

  5. UITextInputAssistantItem 让你可以直接拖一个 barbutton 组在快捷栏上

  6. 对 touch 事件的强化: 例如可以预估上次刷新页面到这次之间点击事件的能力

  7. 对 UIKit 动力学增强,例如支持非矩形边界的碰撞;新增 UIFieldBehavior,支持多种字段类型(包括自定义的),以及 UIAttachmentBehavior 中的其他附件类型

  8. UIUserNotificationAction 中新加了动作属性 behavior,让用户可以在通知处理时输入文本

  9. NSDataAsset 让你可以更容易的根据设备的硬件去获取资源

  10. UIKit 的控件全面支持从左到右布局

 

#Deprecated APIs

 

  以下 APIs 被废弃:

  1. Address Book 和 Address Book UI 被新的 Contacts 和 Contacts UI 替换

  2. NSURLConnection APIs 被 NSURLSession APIs所替换

 

####iOS 9.1

 

iOS 9.1 只加了2个东西,Live Photos 和 Apple Pencil 的支持

 

#Live Photos

 

  Live Photos 让用户可以捕捉和重现一些快乐的时刻,它提供了比传统照片更丰富的内容。当用户按下快门的时候,这个特性会让你的镜头捕捉到更多的内容:更多的图片帧数,音频信息等。当你回放这些动态的照片时,可以看到更多的信息。

 

  iOS 9.1 提供了相关的 APIs,允许 app 播放、导出和分享 Live Photos。Photos framework 新增的 PHLivePhoto 对象,它可以从 PHImageManager 中提取给你 Live Photos 的数据。当然你需要使用 PhotosUI framework 中的 PHLivePhotoView 来展示对应的内容。PHLivePhotoView 提供了完整的展示、交互以及视觉处理。

 

  你可以使用 PHAssetResource 从 PHLivePhoto 里面获取数据用于分享。你可以通过  PHImageManager or UIImagePickerController 在相册中请求 LivePhotos 的资源。如果你的 app 有分享的扩展点,你还可以通过 NSItemProvider 来获取 LivePhotos。在接受端你可以使用 PHLivePhoto 来存放分享者提供的数据。

 

  Live Photos 导出的数据是 PHAssetResource 类型的对象。上传这一堆数据时,你必须当成一个整体去对待。当你在服务端重新打包这段数据时,需要进行来源验证,不同来源的不能进行加载。

 

#Support for Apple Pencil

 

  iOS 9.1 引入了一些 APIs,在 Apple Pencil 支持的设备上,允许用户进行对应的操作。为此,UITouch 做了以下改动:

  1. preciseLocationInView: 和 precisePreviousLocationInView: 这两个方法,会在可用的情况下给你提供 touch 的坐标

  2. altitudeAngle 属性和 azimuthAngleInView: 和 azimuthUnitVectorInView: 方法会为你确定笔尖的高度和方向

  3. estimatedProperties 和 estimatedPropertiesExpectingUpdates 对象会帮你做好刷新 touches 前的预估准备

  4. UITouchTypeStylus 会表征从笔尖收到的 touch

 

####iOS 9.2

 

iOS 9.2 对 CloudKit Framework 和 WatchKit Framework 进行了优化。

 

#CloudKit Framework

 

  CKFetchWebAuthTokenOperation 提供了一个对象让你提供给 web 对象 API token 时,可以获得它的 token。

 

#WatchKit Framework

 

  WKInterfaceDevice 支持从右到左布局,它会提供 layout 的方向参数(WKInterfaceLayoutDirection)以及内容展示用的控件信息(WKInterfaceSemanticContentAttribute)

 

####iOS 9.3

 

#Accessing the Music Library

 

  Media Player 和 StoreKit frameworks 提供了新的 API,让你可以将  Apple Music 的音轨加入到 Music Library 并播放它。首先,使用 SKCloudServiceController API 去看一下当前的设备是否允许你这么做。然后,使用 MPMediaLibrary 的 addItemWithProductID:completionHandler: 方法去添加一个音轨到音乐库中,并且使用 MPMusicPlayerController 的 setQueueWithStoreIDs: 方法去播放它。

 

#CloudKit Framework

 

  CloudKit.framework 支持长操作,即使你退出了也可以在操作。例如大型文件的后台下载,或者用户操作的持久化同步。

 

  如果你将一个 CKModifyRecordsOperation 标记为长操作,记住你的操作因为不会立刻结束,所以这会增加操作冲突的风险。为了防患于未然,你需要:

  1. 创建一个 journal 记录,单次写入的记录(没有冲突的话),然后在读取的使用协调一下这个记录

  2. 当你解决了冲突后,下次启动 app 时从新操作一次

 

#HealthKit Framework

 

  在 HealthKit.framework 中的 HKActivitySummary 对象给了用户当天数据的集合。包括当天的运动量、能量消耗以及站了多久。 Apple Watch 会将数据存在 HealthKit store 中。你可以创建自己的数据集合(例如在你的 iPhone app 中展示 HKActivityRingView),但是这些数据不会被放在 HealthKit store 中。你可以用 HKActivitySummaryQuery 去读取 HealthKit store 中的 HKActivitySummary 数据。

 

#HealthKitUI Framework

 

  iOS 9.3 新增了 HealthKitUI.framework,其中的 HKActivityRingView 可以用来展示 HKActivitySummary 的数据。(移动距离-红色;锻炼-蓝色;站立-绿色)

 

##Watch Connectivity Framework

 

  WatchConnectivity.framework 有了 iPhone 连接多个 Watch 的功能。所以,如果你的 app 是要与 Watch 版通讯的,你需要适配一下。使用新的界面管理 Watch 会话。新的界面提供了更多的信息,如配对的状态和发起配对的提示。所以你如果不适配的话,出现多个 Watch 的时候,你的 app 就可能跪了。

 

####iOS 9.x end

 

发表评论
用户名: 匿名