大多数浏览器和
Developer App 均支持流媒体播放。
-
认识位置按钮
认识 CLLocationButton:一种安全界面元素,提供简单、流畅的方式,仅在必要的时间和场景中授予您的 app 位置访问权限。学习如何在新代码或现有代码中添加 CLLocationButton、如何在界面易读性指南中进行自定义、如何识别并处理定制失败、以及如何与 iOS 传统的基于提示的位置服务授权交互。为了充分了解本节内容,我们建议您要大体了解 Core Location API。
资源
- Core Location
- CoreLocationUI
- Human Interface Guidelines: Accessing User Data
- Requesting authorization to use location services
- Sharing Your Location to Find a Park
相关视频
WWDC21
WWDC20
-
下载
你好 我是辛迪克莉萨 我是Core Location的软件工程师 今天我要来讨论今年 Core Location的新发展 我们推出了两个新功能 在增强应用中基于位置的服务同时 并不需要像之前一样 需要跟用户取得多次授权
从第一个功能开始介绍 我们将基于区域的用户通知 引入watchOS8 现在你的AppleWatch应用 可以在用户到达健身房 或回家后喂狗时 提醒开始健身 举例来说 App in the Air这个新功能 可以在人们到达机场时 通知他们要搭的航班信息 通过基于区域的用户通知 系统可以代替应用程序 呈现区域相关信息 就不需要一直授权了 了解更多关于 如何为watchOS开启 基于区域的用户通知的 更多信息 请查看“watchOS的新增功能” 现在我们来进入本次会议的主要议题 我们要来介绍一种请求位置的新方法 这让人们可以更完善地 控制他们的数据 但同时也为你的应用程序 提供了更多功能 我会先讨论一下 目前位置授权的现况 以及我们开发新功能的动机 在iOS14中 当应用请求位置授权时 会出现提示 人们可以从“允许一次” “仅在使用时” 或“不允许”中进行选择 使用去年的新功能 人们可以控制 发送到应用程序的位置精确度 大家可能已经注意到 在应用程序上选择“允许一次”的人 可能是因为 他们不觉得给予“仅在使用时授权” 是必要的 例如 宠物商店应用程序 可能会请求位置授权 来找出离用户最近的宠物店 但当他们只是在 浏览不同的猫饲料选择时 并不需要用户的位置 在这种情况下 使用此应用的用户 更倾向于选择“允许一次” 或“不允许” 如果人们选择“允许一次” 我们将在用户使用 你的应用程序期间授予位置授权 但是当你的应用在进入后台时 便会失去授权 这可能导致多次位置授权请求 这就可能会对用户体验产生负面影响 在另一种情况下 你可能会注意到 有些用户因为不想收到提示 就会选择不允许 这可能导致稍后必须将用户 特地转到“设置”才能授权位置 由于用户隐私 仍然是Apple的第一优先 我们认为 “我们怎样才能在 不妨碍用户体验之下 给予更多的控制? 我们能不能只在必须的时候 提供一种简单亲切的方式 来授权位置?” 从iOS15开始 我们为UIKit引入了 CLLocationButton 为SwiftUI 引入LocationButton 来解决我提到的问题 有一个应用是ParkFinder 可以找到距离用户最近的公园 在画面下方 有一个蓝色的位置按钮 在箭头旁边 写着“当前位置” 当我点击按钮时 ParkFinder便能获取我当前的位置 并在地图上显示附近所有公园 左上角的位置箭头将变为蓝色 以提醒用户 刚刚授权于此应用 需要注意的是 这个位置按钮其实是给你的应用程序 进行“允许一次”授权 就不用让用户每次都收到授权提示 稍后 我会解说这将如何 影响你现有的授权状态 我们将为watchOS、iOS macOS Catalyst 和Mac上的iPad应用程序 提供位置按钮 现在 让我们深入讨论API 以及如何将 CLLocationButton 添加到你的应用程序 是CoreLocationUI框架的一部分 类似UIButton CLLocationButton 源自UIControls 因此 你可以通过按钮使用 UIControl功能 此外 我们有四个 按钮的特定属性 CLLocationButtonIcon 可以设置箭头的类型 CLLocationLabel 用来设置按钮的卷标 cornerRadius设置按钮的圆度 最后 我们有fontSize 来设置标签的大小 在我简短的介绍之后 你可能想知道 “如何使用CLLocationButton 接收位置信息?” 嗯 这类似于使用 UIButton请求位置 我觉得举个例子更容易理解 让我示范一下如何用 CLLocationButton替换UIButton 在这个UIButton例子中 先创建一个请求位置的简单按钮 首先在按钮点击时请求使用时授权 我首先示范UIButton 并将其标题设置为“当前位置” 我想添加一个调用函数的目标操作 并在每次点击按钮时 执行我们想要的必要操作 在这个例子中 我想显示附近的所有公园 所以我们称这个函数为 “showNearByParks”
在这个showNearByParks函数中 我将使用locationManager 交出requestWhenInUseAuthorization 和startUpdatingLocation 在这个函数中 我还将添加额外的逻辑 来呈现相应地图 但是 为简单起见 先将这部分略去 首先删除前两行来替换 UIButton 并用实例化 CLLocationButton替换 然后将标签设置为 “.currentLocation” 最后 我们可以批注排除 requestWhenInUseAuthorization 的调用 这是因为每次成功点击按钮时 位置按钮都会 代表用户授予一次性授权 因此 如果你 有一个现有的UIButton 替换它就像我们演示的一样简单 但我们想让它变得更简单 所以这里可以看到一个ParkFinder 应用程序的例子 对于那些使用SwiftUI 应用程序的人来说 SwiftUI中也有位置按钮 你可以如示例中所示 使用LocationButton 我想展示的是 我使用SwiftUI的新“symbolVariant” 来设置箭头类型 并使用“tint” 来设置按钮的背景颜色
让我们通过一些例子 来了解如何自定义位置按钮 使用我们的位置按钮 你可以自定义背景颜色 文本和字形颜色 按钮圆角等等 以下是你可以使用我们的按钮 创建的一些示例样式 让我们来看看自定义位置按钮的 分步示例 让我们从默认按钮开始 默认外观上有白色的“当前位置” 文字标题 和systemBlue背景色 如影片所示
我们可以将按钮图标设置为定位箭头
接下来 我们可以将tintColor 从白色设置为黑色 来更改图标的前景色 然后将backgroundColor设置为白色 最后 我可以将圆角半径 设置为25.0来设置圆角
取决于你想要的 按钮属性和大小 如果按钮的宽度等于高度 当圆角半径为宽度的一半时 则可以创建一个完美的圆形 现在 我们通过简单的调整 将我们的默认位置按钮 变成了一个白色的圆形按钮 我们进行的这些样式更改展示 都可以让你的位置按钮样式更丰富 你可以自定义按钮样式 以创建适合你应用的完美外观 然而 权力越大 责任越大 你可能会在自定义位置按钮时 遇到一些限制 来确保你的位置按钮 清晰可见 我接着要讨论的例子 如果你的按钮没有正确绘制 或接收到任何位置信息时 便可以参考 如果遇到这样的状况 虽然进行了目标操作 但应用并不会得到授权 不过别担心 我们将通过日志消息提供大量反馈 以帮助你弄清楚 你遇到的限制为何 例如 这些是不同的日志消息 分别指的是按钮大小 alpha值以及tintColor 和backgroundColor 之间的颜色对比度不足 如果你在Xcode中使用 InterfaceBuilder 那我们便可以通过这个示例 来了解你可以会看到的反馈 继续编辑我之前创建的按钮 如果我要更改现有按钮颜色 为白色的tintColor 用户便看不到箭头 因为按钮的背景颜色已经是白色了 因此 如果你这么做了 就会在Xcode的“问题”选项下的 导航窗格中看到此问题 相反的 我们先恢复成原始按钮 并尝试更改此按钮的 不透明度或alpha值 也许你觉得看得到 但对其他人来说 可能有点太透明了 所以它不符合我们的无障碍指引 Xcode中产生了类似的问题声明 建议你提高alpha值 你可能会遇到的另一个问题 是按钮大小不足 这是当按钮的内容 对于按钮大小来说太小或太大时 根据用户的本地化设置 按钮的文本长度可以改变 现在让我们通过更改语言 来增加文本长度
取决于你的实施 是否是自动布局友好的 如果我们更改语言 文本的长度可能会超过按钮 像是这个按钮文本不适合转成德语 如果发生这种情况 请查看日志消息以获取反馈 不要忘记使用极短或极长的文本长度 来测试你的位置按钮 以及用不同的语言测试 以确保你的按钮 在所有情况下都能正常工作 因此 在自定义按钮时 切记按钮必须清晰可见 如果你的按钮没有正确绘制 或接收位置信息 可能是按钮不够清晰易读 如果是这种情况 我们会提供日志消息作为参考 帮助你找出可能出现的问题 现在你已经知道如何设置位置按钮 你可能想知道按钮会如何影响 现有的授权状态 正如我之前提到的 位置按钮本质上是 获取“允许一次”授权 如果你的应用 没有任何授权 它将具有“NotDetermined”授权 并在隐私设置中 选择“仅当我分享时” 如果这是你应用的当前状态 然后每个用户第一次 按下位置按钮时 此提示将要求他们确认 他们了解授权状态 但是 如果你的应用程序 已经获得位置授权 例如“使用应用程序时”状态 那么使用位置按钮并不会 改变你现有的状态 与任何其他UIButton无异 当位置按钮正常运行 可以使用户感到放心 因为你把何时 以及是否使用他们的位置决定权 交给了用户 由于位置按钮更简单易使用 我们认为人们更倾向使用位置按钮 来向你的应用提供当前位置 所以我们想给用户和你的应用 另一个机会重新出发 如果过去曾在你的应用上选择 “不允许”授权的人 经由点击我们新的位置按钮 他们会看到这个按钮的介绍提示 并有机会将你的应用授权状态 改为NotDetermined 之后也会继续使用位置按钮 所以在本次会议中 我谈到了通过基于区域的用户通知 为你的watchOS应用程序 带来更多动态功能 如果你有兴趣了解更多信息 别忘了查看课程中的资源 我们还介绍了一些很酷的新功能 可以改变询问位置的方式 用户能更好地控制他们的信息隐私 对Apple来说非常重要 用户对私人信息是如何共享的 越来越注意 在设计你的应用程序 以提供最惊人的用户体验时 但也要与你的客户建立信任 你可能会想问问自己: “我的应用程序是适合传统授权方式 还是使用位置按钮的 一次性位置授权呢?” 在某些情况下 答案可能是一次性授权就够了 使用位置按钮 你可以通过让用户 更完善地控制 何时想要分享位置来获取用户的信任 谢谢你的收看 [音乐]
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。