大多数浏览器和
Developer App 均支持流媒体播放。
-
Core Location 新功能
定位技术是在您的 app 内提供基于环境的服务的核心所在。探索 Core Location 框架中的最新功能如何为众多高级测距功能奠定基础,为您提供更多的选项来清晰地将您的定位需求传达给用户,并允许他们为您的 app 提供更加细致的访问授权。
资源
相关视频
WWDC23
WWDC20
WWDC19
-
下载
大家好 欢迎来到 What's New in Core Location 我叫 Adam Driscoll 我是 Core Location 团队的一名工程师 很高兴为大家介绍 我们在 iOS 13 里 对 Core Location 作出的一些改进
所以 我想这可能是我们所有 开发者的初衷 我们希望让我们的用户高兴 现在我们通过 App 来实现 然后 既然你们今天在这里 听我的演讲 我认为用户的位置 是你的 App 中能让用户高兴的 重要因素 所以 你将会想要 使用 Core Location
可能你已经知道 你的 App 将需要 得到用户的授权 以通过 Core Location 访问他们的位置 所以更细节一些来看
你将需要通过我们的授权弹出系统 发出请求 以及响应用户的选择 然后用我们其余的 API 来完成这项工作 好了 这是我们今天在这里 要讨论的内容 因为在 iOS 13 里 我们的授权系统和 它呈现的选项有所变化 我们在地理区域部分的 API 也是如此
我们将具体谈到始终授权 现在它的工作方式有所不同 使用期间授权 现在可以做到更多 暂时授权是全新的功能 我们希望你和你的用户会喜欢它
然后 我会请我的同事 Andrea 上台向你们介绍 这些功能的 App 具体来说 是在地理测距的情景下
好了 让我们从看看我刚才 使用的弹窗开始
你可能在 Platforms State of the Union 演讲里 听到过它
在 iOS 13 中 每一个新用户的 授权交互都会从这个弹窗开始 我想调出一个 我们今天不会过多讨论的选项 它在底部 不允许 如果用户选择了不允许 那么你的 App 将不能 访问他们的位置 这个弹窗将不再出现 所以 你可能已经 在思考这个问题 但当你显示这个弹窗的时候 当你发出请求将这个 弹窗呈现给你的用户的时候 要保持谨慎 要在用户非常了解 为什么你需要 访问他们的位置的时候 以及最可能倾向于 同意授权的时候 再这样做
好了 我们现在的安排 是要讨论始终授权 这个弹窗里没有 允许始终授权的选项 所以 这是个迷吗
如果我们看看你的 App 是如何要求显示这个弹窗的 我想这个迷将被解开 所以 首先 你将需要 一个 CLLocationManager() 它需要一点时间 所以 如果你的 App 比较简单 在 App Delegate 中 将它设置为实例变量 是处理它的好方法 然后 你的 App 可以调用 这两种方法中的一种 要么发出在使用期间授权请求 要么发出始终授权请求 在这个介绍里 我们假设 它发出了始终授权请求
在 iOS 12 里 这将导致 在弹窗中 将使用期间授权以及 始终授权这两个选项都提供给用户 但是现在 在 iOS 13 里 它只提供一个选项 没有始终授权的选项
但是 Core Location 记得 你的 App 的请求 所以 如果你需要始终授权 而你的用户同意的 是这里提供的 最长久正面的选项 使用期间授权
那么这就是你将得到的 Apple 将接收在使用期间授权 但它也会进入 我们所说的 临时始终授权 好了 让我们看看它将如何展开
所以 在这条时间线顶部 蓝色部分是用户将会看到的 下方绿色部分 是你的 App 将会看到的 因为在临时授权下 这两者事实上是不同的 所以 你的 App 请求始终授权 接着用户进行了 使用期间授权 现在 如果用户打开设置 他们将看到 你的 App 拥有使用期间授权
但是 Core Location 回调了 你的 Delegate 然后告知它 接收到了始终授权
所以 我们希望这能 将你的 App 需要在这个情景中做什么 变得非常简单和明确 这需要用到它的始终授权的支持 它需要做 那些需要始终授权来做到的事 在我们在后面讲到 在使用期间授权的时候 我们会对它有更多了解 例如 它可能会 设置一些地理围栏 然后开始基于用户的位置 在后台为用户 执行自动化行为
好了 如果它这样做了 那么 Core Location 将为那些 地理围栏进行监测 在某个时候用户将进入或者 退出某个地理围栏 然后一个事件将被生成
一般来说 这个事件将被 传递给你的 位置管理 Delegate 但是 因为你的授权是临时的 所以 Core Location 将保持一段时间 等到一个合适的时候询问你的用户 他们是否想要将你的 App 升级成为始终授权 那个弹窗看起来像这样 我们终于在底部 看到一个允许始终授权的按钮 所以你的 App 会认为它在这段时间里 一直拥有始终授权 用户则认为 它一直拥有使用期间授权 这个弹窗代表着 我们如何让大家回到一起 统一观点 现在 如果这个弹窗 在你的用户不理解为什么 你的 App 需要 访问他们的位置时出现 或者 他们不希望你的 App 可以在后台访问他们的位置 那么这个时候 他们可以回复 希望继续给你的 App 在使用期间的授权
但是 如果你和你的用户 想法一致 他们喜欢 他们看到的 他们也可以 在这里给你的 App 始终授权 无论如何 这个临时授权阶段结束了
如果你的 App 最终获得了始终授权 那么它也将 接收到开始这项进程的事件
如果以在使用期间授权结束 那么它将不会接收到事件 好了 我们来讨论一下细节 首先记住 当你的 App 在临时始终授权期间 Core Location 将 保持监测并生成一些 你的 App 会有兴趣的事件 但不会将它们传递给 你的 App 除非 这与它实际所有的 在使用期间授权是相一致的
第二 这个能让用户 对你的 App 进行始终授权的 弹窗会在晚些时候弹出 第三 你只能启动这个过程一次
但是 你能 像这个例子一样 在一开始就请求始终授权 或者 你可以先请求 在使用过程中授权 然后在之后的某个时间 可能是当用户与 你的 App 的一种特性进行交互 而这种特性需要支持的时候 将请求始终授权当做一个升级 所以 Core Location 是用来 监测和接收 你的 App 感兴趣的事件 我们来谈谈他们什么时候 将被传递到你的 App 以及在什么时候会被删除 首先 就像我们看到的 如果你的 App 最终获得了始终授权 而不是在使用期间授权 那么它将会被传递 但是如果用户还尚未作出选择 它们也不会被传递
现在 Core Location 要等待一个时机 当我们认为用户 不是很忙 可以最大程度的 理解正在发生什么 而不是给出 不要烦我的类似回复时
所以 在这段时间 如果 在这个基础上生成了更多事件 如果你在监测请求 那么这些事件将 取代前一个出现的事件 这个前序事件将被删除
然后最终 Core Location 将删除 太过老旧的事件 这是因为 它可能和你的用例不再相关 它也肯定不在 用户的思维里 不在用户的脑子里了 所以它们对于帮助用户 了解发生了什么没有帮助 最后 要明确的是 这个过程 会导致很多用例在开始的时候 就被删除事件 但我们认为这非常重要 请为此做准备 因为你才刚刚了解用户 请求始终授权 是需要很多信任的
好了 现在我想 在不同的平台上 讨论始终授权的 实用性和处理方法
所以 tvOS 仅支持使用期间授权 watchOS 真的只需要 使用期间授权
这是因为在 watchOS 里 接入后台运行时间 是受到严格约束的 我们大部分的 API 都 不提供启动行为
此外 类似表盘的上下文 一直处于有效使用中 所以 如果你在致力于做 一个复杂功能 你的 App 可能不需要始终授权 不需要始终授权 类似的 macOS 本身 不支持始终授权 但会自动弹出弹窗 所以你将不需要请求授权
这意味着对于 在 Mac 上的 iPad App 在使用期间授权 和始终授权的作用是相同的
你的 UIKit 代码可以也需要 从它在 iOS 上的使用角度 使用合理的请求 当它在 Mac 上运行的时候 好了 所以 这是始终授权 现在 我们已经 提及了几次关于 什么时候你的 App 需要用到始终授权 让我们来看看在使用期间授权 然后我想我们将会明白
我想我已经暗示过了 但你可能已经在猜测 如果你的 App 请求在使用期间授权 预先请求 在使用期间授权 用户在这个弹窗里进行授权 然后你的 App 将接收 使用期间授权 没有临时时间 也没有后续弹窗的 它保留了在以后 可能在你引入了一个 确实需要始终授权的新功能时 你请求始终授权的机会 那么在你推出一个厉害的新功能 请求始终授权来支持之前 你能做到什么
在 iOS 12 或者更早的版本里 这张表格可以提供答案
就像你看到的 一个获得 在使用期间授权的 App 可以获得 位置更新 它能地理测距 它甚至能在前台启动位置更新后 通过使用蓝色的 后台使用指示器 在后台的持续获得 位置更新 它不能在后台直接开始位置更新 它也不能使用任何一个 有可能在后台启动的时候 携带位置相关的信息的 监测 API 所以 在这里 什么是持续性的功能
你将注意到 在表格的顶端处的服务 仅仅在使用期间授权下工作
而底端的服务
能够在你的 App 不在使用期间 仍能传递位置相关的信息
所以 在 iOS 12 里 只拥有在使用期间授权的 App 无法使用它们 但是 如果底部的这些服务 可以在 一个除非在使用期间 否则不会传递相关信息 的模式里使用呢 在这个例子中 他们是和在使用期间授权相配的 我们可以不用 想太多关于 你的 App 被允许使用什么服务 而开始更多的思考 它是否在使用期间 这是我们在 iOS 13 里做的事 现在这里每一个绿色的对勾 都代表着对 我们所有 API 的完全访问权限 包括重要位置变更监测 区域监测 访问监测
如果你的 App 在使用中 它将接收到重要位置变更 进入区域 离开访问事件 如果它不在使用中 它将不会收到
所以 在 iOS 12 系统下 如果你知道 你的 App 需要进行区域监测 你可能会停下来思考 你需要什么样的授权
但是现在 在 iOS 13 里 你需要想得更深一些
无论你需要做什么 你的用户会知道你在做什么吗 用户是否会直接参与进来
简单来说 如果它将或可以 在那个时候处在使用期间 那么使用期间授权就 能够满足你的 App 的需求 所以 你的 App 什么时候会在使用期间呢 好了 在这条时间线上的某个点 你的 App 将进入前台 从那儿开始 直到它进入后台 它将被认为是处在使用期间 事实上这里有几秒钟的时间 所以 这是一个宽限期 这是为了能够 正好在用户退出 App 之前 发生需要地理位置的事件时 能够支持你的 App 但这个时间非常短 所以请不要过于的依赖它 然后你的 App 将会保持 不在使用期间 直到下一次 进入前台 然后 重复这个过程
好的 所以 如果你想要在 Xcode 里 你的 App 支持的后台模式 列表中添加位置更新 那么你同样可以进入这个场景 当你的 App 进入前台然后
处在使用中 你开始更新你的位置 然后 你在位置管理中 将 allowBackgroundLocationUpdates 的属性设为真
然后当你的 App 进入 后台 那个蓝色的 后台指示器将显示 然后你的 App 在这段时间内 将在后台继续 保持处在使用中 直到它 再一次进入前台
然后 在某个时刻你将 allowBackgroudLocationUpdates 属性 设为假 这就能回到 常规行为 当下次你的 App 离开前台时 它将不再在使用状态
好了 那么复杂功能呢 在现有表盘上的复杂功能 事实上一直在使用中 注意 就像是 后台使用指示器的 宽限时间一样 这是深绿色 你的 App 被认为 不足以在这个状态下请求授权 或者做除了接收位置信息之外的任何事 所以 如果你在做一个 复杂功能 你的 App 可能 不需要始终授权 但是你将需要 向你的 App 上下文 寻求授权
还有一个例子 我想要 提醒大家注意 因为这种方式可以 提供很多附加功能 给使用期间授权 你可以直接让用户参与进来 所以 如果你可以这样做 那么 你可以通过 UNLocationNotificationTrigger 00:15:21.256 --> 00:15:23.256 A:middle 创建一个本地通知
标记一个兴趣区域
然后 当用户进入那个区域 那个通知将会成为相关内容 然后向他们显示出来
注意 在这个时候 到了这个时候 你的 App 还没有接收到任何 关于位置 用户地点的信息 这个通知显示或不显示 你都不会被告知
但是 在这个时候 如果 点击了那个通知 然后启动了你的 App 那么你的 App 会在前台 这是在使用中的一般情况 就在使用场景里 在你需要的地方 好了 所以记住 所有的 Core Location API 服务 现在都 对所有客户开放 至少在一些情境下开放 你可以通过使用本地通知 或者蓝色的后台使用指示器 视情况而定 去获得 或者停留在这些情境下 这意味着 00:16:19.226 --> 00:16:20.076 A:middle 现在 你需要 始终授权的情况仅限于 那些用户不能或不想 在你的 App 之前 参与自动化功能
我们希望这会帮助你 将授权故事变得 对其他情况下的用户更友好
好了 还有另一种方式 可以做暂时授权 在使用期间授权 冷却的时候 这时我们允许暂时授权 所以 这就是这个弹窗里的 中间按钮的功能
让我们来看看 你的 App 可以处于的 所有授权情况 以及一些你能 在 VR 弹窗系统之间做的转换 然后我们能够发现 这个暂时的授权会适用在 哪些情况 从它在 iOS 12 里的 运行的方法开始 当你的 App 第一次进入前台 它的状态是 .notDetermined 这意味着它不能进行访问 顺便说一句 状态越长久将越靠近两侧 授权越高级将 越靠近顶部 所以 .notDetermined 在底部 你的 App 不能访问位置 用户的位置 但是它不是被拒绝的 它是没有被决定的
所以 事实上 在一个 没有被决定的状态下 你的 App 可以 请求一个授权弹窗 当它这样做 它可能会被拒绝 然后它将 不能再次弹出 但是用户也可以 进行使用期间授权 如果你这时 请求一个始终授权 你可以获得一个始终授权 或者你可以 直接在最开始的时候 请求始终授权
所以 那是 iOS 12
现在 在 iOS 13 中 我们已经看到 在通往始终授权的路上 多了一个暂时的状态 叫做临时始终授权 它的功能和 始终授权很类似 但是通过它 过渡回到 在使用期间授权 也是可能的 暂时授权的 工作原理非常相似 这是一个表现得很像 在使用期间授权的临时状态 但会回到 尚未决定的状态 只要你的 App 退出使用
好了 所以暂时的 这个在使用期间授权 是暂时的 然而在其他方面 它和在使用期间授权的 作用类似 所以 你的位置管理 Delegate 在将授权修改为 在使用期间授权时 将会接收一个回调函数 然后 在之后又会收到回到此前状态 但重点是 这发生之后 你的 App 可以也应该 在它下一次需要的时候 再次请求授权
要记住的主要事情是暂时的 使用期间授权 是和你的 App 在什么时候使用 联系紧密的 同时 因为你可以再次请求它 它将与你的 App 流中 确实需要访问位置的部分 紧密相连
所以 让我们从这个角度 看看这个绿色使用图表 所以 这里是最基本的例子 但是我们将让它更基础 通过将第二个使用区域 拖到与第一个相连
现在 当你的 App 在前台处于使用中 我们假设用户以某种交互方式 让你知道你的 App 将需要获得授权 所以你在那个时间点 请求授权 用户进行了授权 仅允许一次 用户进行了一个暂时的在使用期间授权
这种情况下 你的 App 将 获得在使用期间授权 在剩余的所有前台时间内持续 穿过那段 短暂的进入后台的时间 然后通过下一个 前台时段直到 它在最后完全的 进入后台运行
好了 那么如果 中间的间隔再大一些 你的 App 不在使用状态了 会发生什么呢
用户进行交互 你请求授权 你收到了暂时的 使用期间授权 但是当你 进入后台时 它将失效 所以 你可能在想 好了 我该在 第二个使用阶段的什么时候 申请授权呢 我应该在进入前台时 立刻申请吗
不 你不需要 你需要记住 是什么在一开始 促使你请求授权的
例如 可能用户希望 你能按他们的实时位置 更新视图 或者为他们发送的消息 添加地理位置 如果他们在第二个使用阶段 再一次这样做 然后 你应该为了支持这些要求 而请求授权 如果他们不需要 就不要请求授权 关键在于 如果用户 不希望你在上一次后继续 使用他们的位置 那么不要在你进入前台的时候 就立刻请求授权
好了 但是有时候 可能你在 追踪用户的跑步情况 或者 帮助他们导航 那么用户将 希望你继续访问 他们的位置 即便在后台运行期间 好了 在那个例子中 我们可能处在这种情况下 在开始运行之后 你请求授权以记录它 然后你接收到 暂时的使用期间授权 你将开始更新位置 你将 allowBackgroundLocationUpdates 设置为真 所以 当你的 App 进入后台 那个蓝色的后台使用指示器会出现 你的 App 将持续保持使用 因此将继续 不被打扰的在后台期间 拥有在使用期间授权
然后 当再次回到 前台使用期间 结束跑步或者导航 再一次设置 allowBackgroundLocationUpdates 为假 我们就能回到一般情况 好了 我想提出一个 在你进入前台时立刻 请求授权的一个有效用例 那就是 如果用户 希望你的 App 永久拥有授权 永久的跟随他们的位置一起 更新地图 但是只能在 他们直接要求的情况下 在那些例子中 当你进入前台 请求授权 但是你不对 allowBackgroundLcoationUpdates 进行设置 那么你不会得到 后台使用指示器 你的授权 将在你进入后台的时候失效 然后你再次 到达前台 重复
现在 认真的问你自己 用户是不是真的 希望你这样做 有可能会希望 在这种情况下 你可能 早晚会获得永久的 使用期间授权 但也可以 在一段时间内继续这样询问 在用户确认 他们是否希望授权之前
好了 所以我们已经看到了 使用期间授权现在可以处理 一些类似区域监测的功能 这个暂时的授权 甚至可以根据具体情况 来提供支持 我答应过向你们介绍一些 修改过的地理测距 API 所以现在我想有请我的同事 Andre Guzzo 上台来 向你们介绍它 Andre 大家好 我叫 Andre Guzzo 我是 Core Location 团队里的 一名工程师 今天在这里我要向你们 介绍地理测距 我们将看到在 iOS 13 里 API 发生了什么变化 00:23:57.776 --> 00:24:01.466 A:middle 我将向你介绍一个简单的
关于如何使用地理测距以及 在不需要始终授权的情况下 向你的用户提供极佳的位置体验的例子
让我们从回顾 什么是地理测距开始 什么是地理测距 我们在 iOS 7 里介绍它为 区域监测 API 的扩展 一种向你的用户 提供的新维度下的 位置感知的体验
这是区域监测 API 的一部分 因为你希望通过
使用区域监测来启动测距 由于地理测距的简介中要求 拥有始终授权 00:24:41.376 --> 00:24:43.276 A:middle 你希望确定
在你开始测距之前 你所在的位置
是可见的 这样不浪费资源 现在在 iOS 13 里 在使用期间授权可以作为替代 所以 就像我说的 我们将 地理测距作为区域监测的 扩展进行的介绍 所以 为了展示 一个被信标 定义的区域 我们 将 CLRegion 对象扩展成为 CLBeaconRegion 在其他所有属性中 我们包括了 真正定义信标的属性 他们是 uuid major 和 minor
你可以在 iOS 12 以及之前发布的版本中 将这个数据的类型传递给 地理测距 API 但是 让我们关注这个 它准确的定义了一个信标 你可能在多个信标上发现了相同的配置 但是它会看起来像 一个更大的信标 所以 当我通过所有的元素 来定义一个区域时 事实上我在用 符合条件的信标 来定义一个区域 但是在地理测距的例子中 我们可以忽略 minor 和 major 的数值 这等同于使用一个通配符 所以 我可以忽略 minor 数值 现在我的区域被 拥有同样的 uuid 和 major 数值的信标所定义 同样的 我也可以忽略 major 现在我将我的区域扩展到 包括所有 拥有同样的 uuid 的信标 但是不同的 major 和 minor 数值
这是为什么在 iOS 13 中 我们为了呈现筛选条件 而引入了 IdentityConstraint 它告诉我什么是 我感兴趣的信标 定义我的区域
现在 当你创建你的地理区域时 你将使用这个 IdentityConstraint 这个数据类型 你之后将 创建这个数据类型的实例 因为访问新的区域监测 API 时 需要这个数据类型
我们现在通过 举简单的例子来看看这是如何运行的
想象我们需要 创建一个在参观博物馆时 可以使用的 App
我们希望向参观者 提供他们面前的 作品的细节
无需让用户 打出一些长串的名字 或者浏览目录
为了达到这一点 我们将 在展厅里 设置我们的信标
我们将在所有 在博物馆里部署的信标中 使用相同的 UUID 值
我们将为每一个展厅 设置一个特定的 major 值 为每一个在展厅内特定的作品 设置一个 minor 值 然后 我们将需要能够 判断参观者是否 在其中一个展厅 我们不希望在参观者 在咖啡厅做其他事情的时候 进行测距 我们希望在我们知道 他在某一个展厅 参与参观时 再对信标进行测距 在那个时候 我们需要决定 什么是距离参观者 最近的作品 然后提供它的详细信息
最终 所有这些都需要 我们的 App 在使用期间 我们能有把握的假设 因为这是参观者在博物馆里的向导 参观者将已经 在使用我们的 App 了 但是如果我们想要 提醒参观者注意我们的 App 我们可以使用一个本地通知 当参观者亲身到达了博物馆时 进行触发 这样他可以选择 点击 启动我们的 App
所以 让我们看看我们的 App 会是什么样子 这张图呈现了 我们的 App 在使用期间的状态
我们将监控 被信标定义的区域 然后 做出进入和退出事件的反应 当我们在测距时 我们将接收到 临近的信标的更新 让我们关注第一阶段 我们如何定义 信标定义的区域 就像我说的 我们将 在所有的展厅布置信标 我们将在所有的信标上 使用相同的 UUID值 对于所有的展厅使用相同的 Major 值 对特定的对象使用 相同的 Minor 值
由于我们对 参观者什么时候进入 任何一间展厅有兴趣 我们将不考虑 Major 和 Minor 在创建区域时 仅考虑 UUID 我们来看看这在程序里是什么样子 首先 我们需要保证 我们有使用期间授权
然后我们将通过仅提供 UUID 来建立我们的信标约束
我们可以将约束作为参数 来给我们的地理测距 创建一个新 API 我们可以开始监测
在这个时候 我们可以明确 什么时候参观者是在展厅内 什么时候在展厅外 所以我们只需要 响应状态变化 当参观者进入其中一个展厅时 我们开始测距 当他离开其中一个展厅时 要停止测距 我们可以通过定义代理的方法 达到这个效果 在代理方法中 我们将依据状态 做出反应 如果我们在里面 我们将开始测距 如果我们在外面 我们将停止测距 就像你看到的 我们可以提供 我们刚才介绍的信标约束 使你能在区域内 进行查找
注意在你第一次启动监测的时候 这个代理方法将被调用 为了了解你的 初始状态 所以如果参观者已经在 其中一个展厅里 启动你的 App 你的代理将被调用 状态是在展厅内 所以你将获得信息
好了 现在我们知道 如何对进入和退出展厅 进行响应 我们来看看当我们 在里面 要去弄清 究竟哪一个作品离参观者最近
我们希望提供 参观者面前的 作品的信息 我们想知道 如果参观者进入了展厅 什么是离他最近的作品 我们只需要定义我们的代理方法 它将临时的调用 你临近的信标的 更新状态 你将接收到一个 按照接近程度排列的清单 所以 这样能非常简单的 知道哪一个信标最近 然后进行响应
所以 我们看到了当我们的 App 在运行中时 我们需要做什么 但就像我说的 我们可能希望在参观者一到博物馆时 就吸引到他 最可能的情况是 他们在一天前 或者几天前就下载了我们的 App
所以我们可能想要在 当他到达博物馆内部时 提醒他 启动我们的 App 我们将为了这个用到 用户的本地通知 它将被位置触发
所以 我们将需要 通过提供我们的博物馆的 地理坐标来创建一个 真正的地理区域
然后 事实上我声明了 我只对到达感兴趣 你可能希望 也为离开的情况 做出反应 你也可以创建通知 然后我们使用 用户通知 API 来注册我们的本地通知
好了 所以这就是全部
我们对什么是区域测距 进行了简单回顾 我们看到了在 iOS 13 里 地理测距 API 进行了何种改变 以及一个关于 如何在仅有在使用期间授权的情况下 通过使用地理测距来 提供一个极佳的位置感知体验 现在 交还给我的同事 Adam 做最后的总结 谢谢 Andre 所以 什么是我们需要思考的三件事 第一件事是 位置授权已经发生了变化 它在以一些新的方式工作 我们希望它能真正的 适用你的 App 以及通过 让用户知道他们的隐私 是被小心保护的 来提高用户与你的 App 进行交互的信心
这意味着我们希望你能够 测试你的 App 尝试仅依靠进行 暂时授权 暂时的使用期间授权 它管用吗 它令人气恼吗 你能为提高你的 用户体验做什么 让他们不需要在 做好准备之前 决定授权或者拒绝始终授权 对他们位置的访问 然后 本着测试的精神 测距有了一个新的 能帮助你使 位置相关的体验 变得非常好的方法 我们今天提到了 一个例子 它非常有助于 研究新的测距 API 例子很简单 正好是你需要知道的
好了 如果你有任何问题 我们在这周会有两个实验室 其中一个在一个小时左右之后 我不知道具体的时间 有一个是今天上午 11 点到 1 点 另一个是明天下午的 1 点到 3 点
你已经在主题演讲 以及 Platforms State of Union 演讲中 听过了暂时授权 这是第三次 所以 如果你想听 第四次 他们将 在下午两点 Designing for Privacy 中讲到 在本周剩下的时间里 几个有关地图的分享 室内和室外都有 和 Core Location 很搭配 本场会议就不再赘述了 最重要的事是 在 WWDC19 享受 本周剩下的时间 我们期待在实验室见到你 [掌声]
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。