• iOS 9 新特性


    这篇文章介绍了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替代

     

     

     

     

  • 相关阅读:
    ES6入门详解(二) 解构赋值
    python 入门简述
    webpack4x 简述
    ES6入门详解(一) let const
    关于HTML的简述
    按照in条件排序
    Oracle 优化效率
    input输入框校验
    <a>标签操作
    svn安装
  • 原文地址:https://www.cnblogs.com/fengquanwang/p/4816172.html
Copyright © 2020-2023  润新知