App开发团队必须知道的 iOS 11 更新点

简介:
本文讲的是 App开发团队必须知道的 iOS 11 更新点, WWDC 2017 已经过去差不多一个季度了,最近随着 Xcode 9 正式版以及 iPhone 8、iPhone X 的发布,iOS 11 的全面适配也被提上了日程。我整理了一下更新点,包括开发、设计、产品甚至是市场都应该注意的点,分享出来希望对大家有所帮助。

新增框架

ARKit

iOS 11 引入了新的 ARKit 框架,让您轻松创建无可比拟的 iPhone 和 iPad 增强现实体验。 通过将数字对象和信息与您周围的环境相融合,ARKit 为 App 解开了屏幕之缚,带领着它们跨越屏幕的界限,让它们以全新的方式与现实世界交流互动。

通过摄像头看到虚拟物体在现实场景上的叠加

ARKit 框架提供了两种 AR 技术,一种是基于3D场景(SceneKit)实现的增强现实,一种是基于2D场景(SpriteKit)实现的增强现实。

要想显示 AR 效果,必须要依赖于苹果的游戏引擎框架(3D引擎 SceneKit,2D引擎 SpriteKit),主要原因是游戏引擎才可以加载物体模型。

虽然ARKit框架中视图对象继承于 UIView,但是由于目前 ARKit 框架本身只包含相机追踪,不能直接加载物体模型,所以只能依赖于游戏引擎加载 ARKit。

另外需要说明的一点是,ARKit 虽然是 iOS11 新出的框架,但并不是所有的 iOS11 系统都可以使用,而是必须要是处理器 A9 及以上才能够使用,苹果从 iPhone 6S 开始使用 A9 处理器,也就是 iPhone 6 及以前的机型无法使用 ARKit。

可用性

没有 ARKit 当然也可以做 AR,Pokémon Go 就是最好的例证。ARKit 只是降低了做 AR 的门槛。

ARKit 的使用场景比较局限,必须 iOS 11 系统,而且处理器必须是 A9 及以上。如果你需要长时间大量支持 iOS 8、9、10 的系统,以及 iPhone 6S 之前的系统,你可能需要重新考虑你的 AR 方案了。

由于要涉及苹果的游戏引擎框架(3D 引擎 SceneKit,2D引擎 SpriteKit),学习曲线较为陡峭,需要开发进行长时间的知识储备。

如果仅仅针对某些推广活动而使用 ARKit,由于推广活动的时效短,ARKit 的学习成本大,总体上性价比较低,不推荐。

如果整个 App 是基于 AR 的服务功能,那么这将会是一个不错的 idea,例如基于摄像头的“大众点评”,我们可以直接通过摄像头展示的现实世界,叠加一些信息显示商家的评分和地理位置。

对于跨平台的游戏而言,由于兼容性问题,ARKit 也不是一个很好的解决方案。如果只涉及苹果平台,并且你已经使用了 SceneKit 或者 SpriteKit,这个时候你想加入 AR 功能,那么恭喜你,ARKit 将会是最佳选择。

PDFKit

iOS 11 后苹果在 iOS 平台开放了 PDFKit SDK,这是一个在 MacOS 上已经长期存在的框架,但却在 iOS 上姗姗来迟。可以使用这个框架显示和操作 pdf 文件,你可以使用 PDFKit 实现显示 pdf 文档、显示缩略图、展开大纲和搜索文字等功能。

可用性

非常实用的框架,虽然 WebView 也能阅览 pdf,但显然原生的体验是最佳的,当然如果考虑到 iOS 8、9、10 的兼容性,可能现在还不到换的时候。

Core ML & Vision

苹果在 iOS 5 里引入了 NSLinguisticTagger 来分析自然语言。iOS 8 出了 Metal,提供了对设备 GPU 的底层访问。

去年,苹果在 Accelerate 框架添加了 Basic Neural Network Subroutines (BNNS),使开发者可以构建用于推理(不是训练)的神经网络。

今年,苹果给了我们 Core ML 和 Vision!

  • Core ML 让我们更容易在 App 中使用训练过的模型。

  • Vision 让我们轻松访问苹果的模型,用于面部检测、面部特征点、文字、矩形、条形码和物体。

总结一下,如果你已经有了一个训练好的模型,你可以对图像进行场景识别。

通过 Core ML 和 Vision 识别图像所描绘的场景

可用性

想玩好 Core ML 和 Vision,学习曲线还是非常陡峭的。如何构建和训练自己的模型是一个很大的课题,不是一朝一夕能够完成的。基于照片或者相机的应用可以考虑使用 Core ML 和 Vision,甚至可以结合 ARKit,分析基现实场景,并将虚拟信息叠加在现实场景上。

IdentityLookup

可以自己开发一个 App Extension 来拦截系统 SMS 和 MMS 的信息。系统的信息 App 在接到未知的人的短信时,会询问所有开启的过滤扩展,如果扩展表示该消息应当被拦截,那么这则信息将不会传递给你。

可用性

一些运营商或者辅助性质的 App 可能会使用到这个功能。

DeviceCheck

通过使用 DeviceCheck 你能够在某种程度上追踪到这个手机使用了你开发 App 的情况(即使这个 App 被卸载,或者机器被刷机)。DeviceCheck 允许你通过你的服务器与 Apple 服务器通讯,并为单个设备设置两个 bit 的数据(没错,就是 2bit,00 01 10 11 四种可能)。这样即使 App 被卸载重装,被刷机,App后台照样可以拿到之前设置的状态。

可用性

对于新用户活动可以有效防刷,但是并不能取代 deviceID,因为这个 token 是一次性的。

整个流程大致如下:

  1. App 通过调用苹果的 API 获得一个 token,然后把这个通过传递给后台服务器,告诉后台,我要领优惠券。

  2. 后台收到 App 领优惠券的请求之后,拿着这个 token 先去苹果后台查询这台设备的状态。

  3. 后台查询到状态之后根据这个 2bit 数据以及对应的 timestamp 决定要不要发放优惠券。

  4. 如果要发优惠券,发送完优惠券之后,后台拿着 token 去更新苹果后台的2bit数据。

FileProvider & FileProviderUI

  • FileProvider 实现了一个云文件的扩展,让你可以获取用户设备上或者云端的文件。

  • FileProviderUI 为 FileProvider 提供一套类似 Files App 的界面。

可用性

相信会成为以后文档相关类 App 的标配。

Core NFC

NFC(Near Field Communication)即近距离无线通讯技术。Core NFC 主要用于检测 NFC 标签, 并且读取其中包含的 NDEF 数据。

要注意的是:

只能同时开启一个 session

App 需要在前台,退入后台失效

session 最多存活60秒,超时必须重启新 session

需要配置 info.plist,开启 NFC 读取权限

仅支持 iPhone 7 和 7P 以上包含 NFC 模块的机型

可用性

首先,你需要有 NFC 设备。有设备的可以考虑,没设备的也不可能为了引入新功能硬着头皮去做 NFC。

Drag & Drop

苹果官网的拖拽Demo

拖拽功能,iOS 系统帮助我们处理了绝大部分工作,开发者几乎只需要处理结果。UITextView 和 UITextField 原生支持拖拽,UICollectionView 和 UITableView 的拖拽有一系列专用的 delegate 来表明拖拽的发生和结束。而你也可以对任意 UIView 子类定义拖拽行为。和 Mac 上的拖拽不同,iOS 的拖拽充分尊重了多点触控的屏幕,所以可能你需要对一次多个的拖拽行为做些特别处理。

可用性

只有 iPad 上能支持不同 App 之间的内容拖拽共享,iPhone 上只能在 App 内部拖拽内容,iPhone 上的这一限制使得 Drag and Drop 大打折扣。Drag & Drop 在文本、图片编辑类 App 上能够大放异彩。

iPhone X 适配

Safe Area

iOS 11 设备上运行出现最多问题应该就是 tableView 莫名奇妙地偏移了 20pt 或者 64pt。原因是 iOS 11 弃用了 automaticallyAdjustsScrollViewInsets 属性,取而代之的是 UIScrollView 新增了 contentInsetAdjustmentBehavior 属性,这一切的罪魁祸首都是新引入的 Safe Area。

Safe Area

Safe Area 帮助我们将 view 放置在整个屏幕的可视的部分。即使把 navigationBar 设置为透明,系统也认为安全区域是从 navigationBar 的 bottom 开始的。

安全区域定义了 view 中可视区域的部分,保证不被系统的状态栏、或父视图提供的 view 如导航栏覆盖。可以使用 additionalSafeAreaInsets 去扩展安全区域。每个 view 都可以改变安全区域嵌入的大小,controller 也可以。

safeAreaInsets 属性反映了一个 view 距离该 view 的安全区域的边距。对于一个 controller 的 rootView 而言,safeAreaInsets 值包括了被 statusBar 和其他可视的bars 覆盖的区域和其他通过 additionalSafeAreaInsets 自定义的 insets 值。对于 view 层次中的其他 view,safeAreaInsets 值反映了 view 被覆盖的部分。如果一个 view 全部在它父视图的安全区域内,则 safeAreaInsets 值为(0,0,0,0)。

App 在 iPhone X 无法全屏

如果你的 App 在 iPhone X 上运行发现没有充满屏幕,上下有黑边,说明你没有使用 storyboard 做 LaunchImage,而是用的 Assets。Assets 的解决办法是添加一张尺寸为 1125 x 2436 的 LaunchImage。

需要特别注意的 iPhone X 适配点

  1. 隐藏导航栏的界面特别要注意,因为“耳朵”和 Safe Area 的原因,很有可能上面会露出小片空白。

  2. 列表页如果没有 tabBar,而且列表页可以拉到最底下,请在列表页最后留一点空白给手势区域。

  3. 列表页使用系统的 tabBar 那是完全自动适配的,但如果是自定义的 tabBar,请适当在 tabBar 底下留出空白给手势区域。

FaceID & TouchID

注意,iPhone X 支持 FaceID 进行身份验证,但不支持 TouchID验证。注意做好机型的区分,请勿在 iPhone X 上使用 TouchID,也请勿在其他设备上使用 FaceID。

Xcode 9更新

可以同时开启多个不同的模拟器

Swift 4.0 支持

重构内置于编辑体验之中,并可跨Swift,Objective-C,Interface Builder和许多其他文件类型

Named Color - 可以在 xcassets 里添加颜色,然后在代码或者 IB 中引用这个颜色

App Store更新

整体版面

iOS 11 App Store 版面

苹果在9月20日已经正式向用户推送了 iOS 11 正式版,App Store 迎来了重大的更新,不管是版面还是UI相比之前都有很大的改动。版面上取消畅销榜推荐;免费榜和付费榜的入口变深了;搜索变得更强,可以搜索到编辑故事、精选榜单等多元内容;增加了 Today 软件的推荐,并且在游戏软件中着重推荐 AR 游戏,看来全新的 App Store 也为之后的 AR 类软件发展格局做出了铺垫。

取消畅销榜推荐,免费榜和付费榜的入口变深,说明苹果意在强化内容以及给搜索镀金,为 Search Ads 的到来做足前戏,同时削弱了榜单,就达到打击刷榜的目的。

App自荐

Today 是 App Store 的最大更新,和之前的苹果推荐不同,这次你可以向 App Store 自荐你的 App: https://developer.apple.com//contact/app-store/promote/

你需要准备的资料有:开发者名称、应用名称、应用 Apple ID、应用描述、可支持设备、语言支持、地区支持、应用题叫日期、应用发布日期、应用故事。

值得一提的是,在应用描述和应用故事上尽量阐述应用的亮点和关键性功能等这些具有竞争力的信息会更好。当然,应用故事会更侧重情怀一点的东西,跟苹果说明你开发应用的灵感以及跟开发者相关的故事等。

截图和视频预览

搜索截图展示为3张

App Store 搜索结果从 iOS 10 展示两张 App 截图,推进到 iOS 11 已能展示三张。把原本需要进入到 App 详情页面的才能看到的信息,更多披露在上一层级,让用户不需要点击进入就可以了解更多信息。原本 iOS 10 上前两张应用截图拼合成一张完整图片的思路可以改变了,在 iOS 11 上,或许你应当设计成3张应用截图的拼合模式。

iOS 10 上前两张应用截图拼合成一张完整图片

此外,iOS 10 中一个 App 只能上传一个 Preview Video,在 iOS 11 中开放为 3 个。另外视频预览可以自动无声播放。

蜂窝网络下载限制

蜂窝网络下载限制提升到 150 MB

准确来说这不属于 iOS 11 的变更。9月20日,苹果除了发布 iOS 11 正式版外,还宣布变更一项 App Store 政策,允许用户在连接到蜂窝网络时下载不超过 150 MB 的应用,此前这个上限为 100 MB。 苹果公司在其官方网页上发布的一篇文章中提到了这个新的下载上限。

对于广大 App 来说是好事一件,再也不用为了挤出那么几兆的空间而铢施两较。为了蜂窝网络下用户的更新率,而影响业务发展,其实就有些本末倒置了。


本文作者:佚名

来源:51CTO

原文标题:App开发团队必须知道的 iOS 11 更新点
相关文章
|
6天前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
15天前
|
开发框架 数据可视化 Java
iOS开发-SwiftUI简介
iOS开发-SwiftUI简介
|
4天前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
3天前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
18 7
|
6天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台解决方案
【9月更文挑战第27天】在移动应用开发的广阔天地中,安卓和iOS两大操作系统如同双子星座般耀眼。开发者们在这两大平台上追逐着创新的梦想,却也面临着选择的难题。如何在保持高效的同时,实现跨平台的开发?本文将带你探索跨平台开发的魅力所在,揭示其背后的技术原理,并通过实际案例展示其应用场景。无论你是安卓的忠实拥趸,还是iOS的狂热粉丝,这篇文章都将为你打开一扇通往跨平台开发新世界的大门。
|
7天前
|
XML 移动开发 前端开发
使用duxapp开发 React Native App 事半功倍
对于Taro的壳子,或者原生React Native,都会存在 `android` `ios`这两个文件夹,而在duxapp中,这些文件夹的内容是自动生成的,那么对于需要在这些文件夹中修改的配置内容,例如包名、版本号、新架构开关等,都通过配置文件的方式配置了,而不需要需修改具体的文件
|
7天前
|
存储 开发工具 Android开发
使用.NET MAUI开发第一个安卓APP
【9月更文挑战第24天】使用.NET MAUI开发首个安卓APP需完成以下步骤:首先,安装Visual Studio 2022并勾选“.NET Multi-platform App UI development”工作负载;接着,安装Android SDK。然后,创建新项目时选择“.NET Multi-platform App (MAUI)”模板,并仅针对Android平台进行配置。了解项目结构,包括`.csproj`配置文件、`Properties`配置文件夹、平台特定代码及共享代码等。
|
12天前
|
前端开发 iOS开发 开发者
探索iOS开发中的SwiftUI框架
【9月更文挑战第21天】在iOS应用开发的广阔天地中,SwiftUI框架如一股清新之风,为开发者带来了声明式语法的便捷与高效。本文将深入探讨SwiftUI的核心概念、布局方式及数据绑定机制,同时通过实例演示如何运用SwiftUI构建用户界面,旨在引领读者领略SwiftUI的魅力,并激发其对iOS开发新趋势的思考与实践。
31 6
|
12天前
|
安全 Swift iOS开发
探索iOS开发之旅:Swift语言的魅力与挑战
【9月更文挑战第21天】在这篇文章中,我们将一起潜入iOS开发的海洋,探索Swift这门现代编程语言的独特之处。从简洁的语法到强大的功能,Swift旨在让开发者能够以更高效、更安全的方式构建应用程序。通过实际代码示例,我们会深入了解Swift如何简化复杂任务,并讨论它面临的挑战和未来的发展方向。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和知识。
28 4
|
23天前
|
IDE 开发工具 Android开发
安卓与iOS开发对比:平台选择对项目成功的影响
【9月更文挑战第10天】在移动应用开发的世界中,选择正确的平台是至关重要的。本文将深入探讨安卓和iOS这两大主要移动操作系统的开发环境,通过比较它们的市场份额、开发工具、编程语言和用户群体等方面,为开发者提供一个清晰的指南。我们将分析这两个平台的优势和劣势,并讨论如何根据项目需求和目标受众来做出最佳选择。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解每个平台的特性,并指导你做出明智的决策。
下一篇
无影云桌面