大多数浏览器和
Developer App 均支持流媒体播放。
-
在你的 app 中支持本地网络私隐
当 app 连接到某个人的家庭网络上的设备时,本地网络隐私可提高透明度。 如果你的 app 与使用 Bonjour 或其他本地网络协议的设备进行交互,则必须在 iOS 14 中添加对本地网络隐私权限的支持。进一步了解有关新权限流,并按照我们的指导操作,逐步完成更新 app 的必要步骤。我们还将为你提供一些最佳实例,以帮助你创建顺畅的隐私体验。
资源
相关视频
WWDC22
WWDC20
-
下载
(你好 2020 全球开发者大会)
大家好 欢迎来到全球开发者大会 (在你的 APP 中支持本地网络私隐) 嗨 我是 Tommy Pauly 我会分享一些关于你的 app 如何与本地网络交互的重要隐私更新 网络不仅仅是连接互联网的一种方式 你的 iPhone 常常会直接 和本地网络上的其他设备交互 你或许会控制家里的灯具 工作时打印文档 在飞机上观看视频 或与附近的朋友一起玩游戏 如果你的 app 提供这样的体验 那它就在使用本地网络 在 Apple 设备中 使用本地网络的 最佳方式是通过 Bonjour (Bonjour 服务发现) (流媒体、互动游戏 家用和外围设备) Bonjour 能让你的 app 发现附近的服务 并且传播自己的服务 Bonjour 是播放流媒体视频和音频 P2P 游戏以及和打印机、相机 家中设备进行通信的基础 一些 app 还会在较低水平上 与本地网络交互 (网络管理、自定义多播协议) 你的 app 或许能配置 Wi-Fi 路由器 或使用了自定义多播或广播协议 来和老式的硬件进行通信 对你的 app 而言 访问本地网络是一个强大的功能 但伴随着这一强大能力的 是与之同样重大的责任 即尊重用户隐私 用户应知道你的 app 何时会访问本地网络 而你作为开发者 也应该清楚你的 app 所使用的框架 何时会执行此类操作 我们来探索一下隐私 是如何与网络访问相交互的 定位是你的 app 可以访问的 最为隐私敏感的信息之一 从 iOS 13 开始 你的 app 需要位置权限 才能读取网络的名称和 BSSID 但是 仅访问本地网络 也可以得到位置提示 例如 某人在使用家庭网络时 他们周围那套设备与服务的组合是唯一的 没有哪两个家庭网络看起来完全一样
而这一网络上的设备相关信息 可被 app 用来创建位置指纹 (KATIE 的家) 你的 app 还需要获得许可 才能控制周围的设备 通过蓝牙进行的通信 可以让你的 app 访问敏感信息 但是访问本地网络 可以发现很多类似的信息 例如 某个 app 可以通过本地 Wi-Fi 设置并管理许多设备 但是 任何其他的 app 也可以尝试与那个设备通信 如果你的 app 可以管理相机 那它应该有权同步照片 但其他 app 也许不该有这个权限 所以 在 iOS 14 中 用户现在可以控制 允许哪些 app 访问本地网络 并且与本地网络交互 这是一个大好的机会 可以为你的用户提供更高透明度 并且查看你的 app 中 所运行代码访问网络的方式 (不受限制 需要权限) 如果你的 app 只是访问互联网上的资源 那你无需做任何其他的事情 如果你只使用系统服务 像隔空打印、隔空播放 隔空投送或 HomeKit 等 与本地网络进行交互 那你也不需要更新 这些系统服务处理设备发现时 不会向 apps 透露完整的设备列表 另一方面 如果你的 app 在 app 内 直接访问本地网络 无论是用单播还是多播协议 你的 app 都会需要权限 而且你需要在 iOS 14 中 对你的 app 进行一些简单的更新 为了了解更多细节 我们来看看你的 app 如何获得访问本地网络的权限
如何在 iOS 14 更新你的 app 以及如何确保 在人们使用你 app 的功能时 获得出色的体验 我们从查看一些权限开始 app 在首次尝试与本地网络交互时 会触发一个提示框 (TicTacToe 想连接你的本地网络 不允许 同意) 在授予权限之前 所有本地网络的通信都将被阻止 提示框所包含的用法介绍 是你加入到 app 的 info.plist 中的 尚未更新至 iOS 14 的 app 将显示默认原因文本 如果你看到不希望自己的 app 会出现的提示 那你可能正在使用 访问本地网络的第三方框架 记住 授予你 app 的任何权限 也适用于你所使用的框架 (本地网络) 你 app 的权限 可以随时在“设置”的“隐私”面板中的 “本地网络”下查看和修改
每个请求访问本地网络的 app 都会在这里显示 切换开关也会在 你 app 的单独设置中显示 你的 app 更新到 iOS 14 后 你需要进行一些修改 以确保其能够在隐私权限下运行 (app 需求 info.plist 键) 在你 app 的 info.plist 中 你可以提供两个新键 首先 如果你的 app 访问过本地网络 你应该提供一个用法介绍 这可解释你 app 中的哪些功能 需要访问本地网络 其次 如果你的 app 使用 Bonjour 进行浏览或者传播 你必须提供所使用的服务类型列表 每种服务类型都是用 IANA 注册的 唯一字符串 可以识别你的 app 协议 在这里 服务类型是 tictactoe.tcp 有几种不同的 API 可以允许你的 app 使用 Bonjour (使用 Bonjour 的框架) 如果你使用这些 API 中的任何一个 请确保更新你的 info.plist 以列出 Bonjour 服务类型
有些特别的 app 无需 Bonjour 也可以执行 本地多播方式 但也有 app 需要列举网络上 所有的 Bonjour 服务类型 这些操作需要在 iOS 14 中获得资格 你可以通过开发者门户申请这一资格 下面我们来看看更新你 app 的步骤
这是我最初为 iOS 13 打造的一款 可以用来和周围的人 玩 TicTacToe 的 app 我要做的就是在 iOS 14 的 SDK 上 重新运行这一 app 然后看看会发生什么
好吧 我在附近没有看到任何人
这对我来说有点出乎意料 它没有按照我想要的情况运行 如果我查看调试输出 你会发现我们从浏览器对象“NoAuth”中 得到了一个错误
这一错误表示 app 已被阻止了 但没有出现任何访问本地网络的提示 如果看到这种 NoAuth 错误 那意味着你需要将 Bonjour 服务 和用法介绍添加到你的 info.plist 中 我们现在来添加一下 我们要做的是去到项目设置 然后点击“信息” 在这里 我们需要添加两个新字段 第一个是拥有本地网络访问 用法介绍的隐私字段
好 在这里我们可以输入 “TicTacToe 使用本地网络
来发现你附近的玩家” 这样就可以了 然后另一件我们要做的事情 是添加 Bonjour 服务类型
所以这里可以添加为 Bonjour 服务 并且这里会自动识别到 这是一个字符串数组
这款 app 仅使用一种类型 即 tictactoe.tcp 好 我们现在来重新编译 app 看看会发生什么
好了 我们会马上看到在 app 中出现一个提示 即 TicTacToe 想要查找并连接本地网络上的设备 我们还可以看到我们在 info.plist 中 设置的自定义用法字符串 现在 如果我点击“同意” 该 app 就会在 Bonjour 上进行浏览 很好 但是 你可能已经注意到了 这恰好是在我启动 app 时发生的 这可能会给用户带来一些不愉快的体验
为了避免这一点 我还创建了这一 app 的另一个版本 仅会在用户执行实际操作时出现提示 并且尝试进行浏览 所以我们转换到手机上再去看一看
这就是该 app 的另一个版本 你会发现当我开始运行它时 没有出现任何提示 取而代之的是 只有当我点击“搜索游戏” 开始查找其他玩家时 我才会获得提示 这样体验感会好很多 然后我们选择“允许”
正如你刚才看到的 使用隐私权限控制本地网络访问的方法 可能会改变你使用 app 的体验 我想重点强调一下更新你的 app 时 要考虑的几个最佳做法 (避免意料之外的提示) 第一 请确保当你的 app 触发提示时 不要让人们感到困惑 (延迟访问本地网络) 不要在你的 app 启动时 就去尝试浏览网络 要等待需要浏览的操作后进行 这是你的 app 被授予 访问本地网络访问权限的机会 (避免在启动时浏览) 要选择合适的时机 这样才更有可能得到 用户的授权 (等待用户互动) 当你的 app 确实触发提示时 请确保你提供了清楚的用法介绍 以准确表明要启用的功能是什么 你的 app 可能还会遇到以前未处理过的 错误和 API 行为 (得体地处理错误) Bonjour API 是异步传递结果的 每当你的 app 在等待授权时 会看起来好像附近没有任何设备 使用 NWConnection 的本地连接 在你的 app 得到授权之前 将保持等待状态 同样地 如果你的 URLSession 任务 使用本地网络 请确保设置 waitsForConnectivity 这一属性 这样一旦权限得到授予 你的任务就会完成 如果你仍在直接使用套接字 如果你的 app 没有得到权限 那你需要处理系统调用错误 最后 你的 app 应尽可能地 选择使用系统为本地网络 提供的体验 (优先选择系统 API 使用系统提供的框架) 如果你使用隔空打印、隔空播放 隔空投送和 HomeKit 你的 app 不需要做任何特殊处理 仍然能提供强大的隐私保证 我们来回顾一下在你的 app 中 需要做的事情 首先 使用 iOS 14 SDK 重建你的 app 然后测试出你的 app 使用本地网络的方式 其次 如果你的 app 确实使用本地网络 请确保在你的 info.plist 中 提供清楚的用法介绍 最后 如果你的 app 使用 Bonjour 请在 info.plist 中表明你的服务类型
感谢大家的观看 (2020 全球开发者大会)
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。