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

iOS 9 新特性的更多相关文章

  1. iOS 9应用开发教程之iOS 9新特性

    iOS 9应用开发教程之iOS 9新特性 iOS 9开发概述 iOS 9是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统于2015年6月8号(美国时间)被发布.本章将主要讲解iOS ...

  2. iOS开发——新特性OC篇&Swift 2.0新特性

    Swift 2.0新特性     转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...

  3. iOS开发——新特性OC篇&IOS9 系统新特性

    IOS9 系统新特性 2015年6月89号凌晨召开的WWDC 2015苹果开发者大会发布了全新的iOS 9系统,PC6小编今天给大家整理了这次iOS9的系统更新带来了哪些新的功能与升级,本次新功能一览 ...

  4. iOS开发——新特性OC篇&IOS9 SDK新特性

    iOS9 SDK新特性 WWDC 2015苹果开发者大会是移动开发者一年一度的盛会,InfoQ中文站除了第一时间整理Keynote内容分享给大家之外,还邀请了资深的一线开发者分享他们的收获.本文为王巍 ...

  5. iOS开发——新特性OC篇&Objective新特性

    Objective新特性 Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时, ...

  6. iOS 8 新特性

    这篇文章会介绍iOS8开发相关的主要特性. App 插件 通过支持插件,iOS8让我们可以系统指定的区域进行扩展,也就是为用户的特定需求提供自定义的方法.例如:可以通过App插件帮助用户分享他们的内容 ...

  7. iOS 7 新特性

      iOS7更新了很多引人注目的功能.用户界面完全重新设计了.iOS7为开发2D,2.5D游戏引入了全新的动画系统.加强多线程,点对点连接,以及许多其他重要的功能让iOS7成为有史以来最有意义的一次发 ...

  8. iOS -- iOS11新特性,如何适配iOS11

    前言 这几天抽空把WWDC的Session看了一些,总结了一些iOS11新的特性,可能对我们的App有影响,需要我们进行适配.本文作为一个总结. 本文内容包括:集成了搜索的大标题栏.横向选项卡栏.Ma ...

  9. iOS开发——新特性篇&swift新特性(__nullable和__nonnull)

    swift新特性(__nullable和__nonnull) 最近在看老师写代码的时候经常遇到两个陌生的关键字,但是当我在我的电脑上敲得时候就是敲不出,后来才知道这是为了swift与OC混编的时候产生 ...

随机推荐

  1. hdu1532(最大流)

    传送门:Drainage Ditches 题意:给出n个河流,m个点,以及每个河流的流量,求从1到m点的最大流量. 分析:网络流入门题,第一次写按照白书上毫无优化的Ford_fulkerson算法,先 ...

  2. Android_app项目开发步骤总结

    做了几个android企业应用项目后,总结了项目的基本开发步骤.希望可以交流. 一 应用规划:      ※确定功能.      ※必须的界面及界面跳转的流程.      ※须要的数据及数据的来源及格 ...

  3. hdu1158(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1158 分析:dp[i][j]表示第i个月用j个人需要花费的最少费用: 则状态转移方程为:dp[i][j ...

  4. 用JS实现发邮件的功能 完美解决

    怎样用JS实现发邮件的功能? 我想用JS实现把页面文本框中的内容直接通过邮件的方式发送到一个指定的邮箱.fengxq给出的答案是<script language=javascript>if ...

  5. Linux mysql 数据库忘记root密码

    1.修改MySQL的登录设置: # vi /etc/my.cnf 1在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vi. 2.重新启动mysqld # /etc/i ...

  6. hdu4115 Eliminate the Conflict

    Eliminate the Conflict Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...

  7. @font-face(css3属性)实如今网页中嵌入随意字体

    @font-face语法规则 @font-face { font-family: <YourWebFontName>; src: <source> [<format> ...

  8. 提高SQL执行效率

    原文地址:http://www.cnblogs.com/hlxs/archive/2012/05/07/2487082.html 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ...

  9. login控件“您的登录尝试不成功。请重试”的解决方法

    原文:login控件"您的登录尝试不成功.请重试"的解决方法 遇到login控件“您的登录尝试不成功.请重试”报错之后,在网上找了很久,也按照如下帖子设置了 application ...

  10. MYSQL中取当前年份的第一天和当前周,月,季度的第一天/最后一天

    mysql 获取当年第一天的年月日格式:SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY); MySQL里获取当前week.month ...