大多数浏览器和
Developer App 均支持流媒体播放。
-
针对 Apple Watch Series 3 进行更新
有了 Apple Watch Series 3,即使手机不在身边,也能轻松保持联络。了解如何通过 URLSession 让您的 app 在使用蜂窝网络连接时保持响应。了解如何优化您 Watch app 中的联网代码,确保您的 app 始终保持最新,随时可供使用。探索如何利用全新气压高度计提供的 Core Motion 数据来显示相对高度变化。
资源
-
下载
为 Apple Watch Series 3 更新你的 watchOS 4 App 这会让它更容易保持连接状态 并能够使用新的气压高度计 Apple Watch 开始依赖于 在所有网络状态下与 iPhone 的连接 但是 从 watchOS 2 开始 如果超出了 iPhone 的连接范围 Apple Watch 依然可以通过 Wi-Fi 通讯 就在你的 iPhone 之前连接过的 Wi-Fi 热点范围内 带有蜂窝网络的 Apple Watch Series 3 可以使你的 App 直接通过蜂窝网络连接通讯 如果你的手机不在身边 或处于没有 Wi-Fi 热点的地方 你的 App 不仅可以在任何地方更新它的数据 而且当你的 Apple Watch 处于蜂窝数据连接状态时 iPhone 收到的通知也会被自动转发到它上面 为了确保你的 App 能在所有可能的 连接状态下正常工作 在 Watch App 中调用 URLSession 网络请求现在变得更为重要 URLSession 是用于在 watchOS 中 创建和管理网络连接的类 用你 Watch App 代码中的 URLSession 可以直接从 Apple Watch 发起网络请求 当你的 iPhone 在 Apple Watch 的连接范围内时 这些请求会通过 iPhone 在后台运行 用以增强他的信号强度 否则请求会直接通过 Wi-Fi 热点 单元连接的方式来执行 当你使用 URLSession 时 Apple Watch 仅通过蜂窝数据传输会话 请注意 此时的会话可能会被系统做略微不同的处理 让我们来看看你能想到的 不同类型的会话 对于默认的和临时的会话 这些类型的会话将在应用程序状态 活动时正常工作 你可以在共享的 WKExtension 对象上 使用 ApplicationState 属性检查当前应用程序的状态 但是 如果应用程序的状态是不活跃的或在后台 不允许使用这些类型的对话 这里要提醒你的是如果你的 App 正在使用后台导行模式 那他们是可以被使用的 下面 让我们来看一下后台会话 在后台会话中 我们更希望传输小型数据 在系统能更好地处理网络请求前
任何数据传输都有被延迟的可能 这是系统本身所决定的 并考虑了许多因素 例如 电量等级 连接强度 以及其他应用程序需要完成的任务 在后台会话中 一旦请求完成 响应返回 如果你的 App 处于前端 App 状态 那它会被立刻唤醒 并提交响应 在前端 App 状态之外 如果时机恰当 或者当 App 状态再次被激活时 系统会处理响应并唤醒你的 App
现在让我们来看看一些效果不错的实践案例 来确保你充分利用了你 watchOS 里的网络代码 第一种是在你的 URLSessionConfiguration 对象上 使用新的 waitsForConnectivity 属性 在非后台会话中设置此处为 True 将允许系统等待连接稳定 足以完成请求 而不是立刻显示失败 有一个委托函数可以知道 连接何时在等候 所以一切尽在你的掌控之中 我们鼓励在所有不强调及时性的 请求上都使用该属性 因为一旦连接可行 他们就会立刻触发工作 如果没有 系统将等待请求 直至连接恢复 这可以让你专注使 App 变得更优秀 而不是去钻研可达性代码
在对象 WKExtensionDelegate 中 你可以调用 applicationWillResignActive 函数 当你有网络请求的时候 它可以优化应用程序从活跃到不活跃状态的 变化过程或后台状况 换句话说 就是人们在使用你的 App 时不活跃的时候 通过这个函数 你可以决定取消你现有的请求 抑或作为后台会话再次创建它
最后 总是使用共享单例对象 URLSession 来完成多个任务是最好的方式 而不是为每一个任务创建一个会话 创建和作废许多会话会给系统带来 不必要的内存消耗 因此最好是使用共享会话 或尽可能地减少使用单独会话
让我们来看看 Watch Connectivity 框架 随着 Apple Watch 的联网功能 变的更加独立 重要的是知道用户在哪里使用 Watch Connectivity 从而帮助他们获得更完美的 Watch App 体验 在 Apple Watch 上的 App 初次运行时 可能会需要使用服务进行身份验证的密钥 使用 Watch Connectivity 是传递 iPhone App 中可能已存在的信息 的一种很好的方式 如果你的 App 为健身设计的教练类 App 或其他类似的 App 一旦有人开始使用你的 App 你可能想要在一开始就在 Apple Watch 中 添加一些较大的音频文件 Watch Connectivity 可以处理这些添加请求 并使你的 App 依然保持轻量 以方便日后资源补充更新 WCSession 上的 updateApplicationContext 函数 允许 iPhone 发送一个数据词典 而 Watch App 可以在下次激活时访问它 这是一种很好的方式 它可以让新数据传输到 Watch App 中 防止出现 iPhone App 更新了数据 而 Watch App 却没有更新的情况 当 Watch App 启动时 你可以在初始化网络请求时 显示更新的数据 重要的是你要构建 一种回滚到网络请求的能力 随着 Apple Watch 变得更加独立 从 iPhone 获得最新的数据 变得越来越没有保障
现在让我们把目光转向 Apple Watch Series 3 中全新的气压测高计 这样你就可以在别人 iPhone 不在身边的时候 在健身总结中添加 气压升高或降低的高度 这也有助于为 HealthKit 提供更为准确的 运动能量消耗计算 反过来也能帮助你改善 App
使用 Core Motion 从你的 App 开始接受更新的地方开始 它就可以知道相对高度的变化 而相对高度的变化意味着 站在高度八百米高的地方 并再往上走 50 米时 相对高度将是 50 米 如果你从起始点向下移动 80 米 那么相对高度将是负 80 米 Core Motion 包括 CMAltimeter 类 你可以使用它来接受更新 CMAltimeter 可以确定并告诉你该设备 是否具备提供相对高度更新的能力 在向 Core Motion 询问有关相对高度的信息之前 你应该总是检查一下这个问题 在 watchOS 4 中 CMAltimeter 可以为你 提供 Motion 和 Fitness 活动授权状态 你可能要去处理授权被拒绝或者 被限制的情况 这取决于你 App 所访问的内容 最后 CMAltimeter 提供了启动和停止 相对高度更新的功能 在 watchOS 4 中 这些更新 每 2.5 秒进行一次 这是我们对原始 信号传感器进行信号过滤的缘故 当你接受更新时 将有一个处理程序 传递给你一个 CMAltitudeData 对象
CMAltitudeData 会提供给你该更新 相对高度的的变动数据 这包括了以下数据 第一个就是时间戳 该对象是一个时间间隔 并且作为 参考日期之后的秒数给出 将该值转化为 Date 对象 你很轻易地就可以在 Date 类下使用 timeIntervalSinceReferenceDate 函数
下一个数据是相对高度 这代表了上次反馈数据 以来的高度变化 记住这是一个相对值 因此如果设备在高度上发生变化 数据仅仅反映了高度的变化 而非实际的高度 这个数据是以米为单位统计的 最后一个数据是气压 由于高度计是一个气压高度计 Core Motion 可以在相对高度变化的同时 为你提供记录的压力 这个数据是以千帕为单位记录的
让我们来看看一个例子 关于如何使用 CMAltimeter 启动相对高度更新 以及如何正确地检查设备的 功能和授权状态 在调用 beginAltitudeUpdates 函数之前 我已经将 Core Motion 框架导入到我的类中 并在 CMAltimeter 类型中 创建了一个名为 altimeter 的实例变量 这是接下来我们用于启停 相对高度更新的对象 在函数中 我们要做的第一件事 相对高度功能在此设备上是否可用 如不可用 我们可能会希望通过修改 UI 来向用户表明这项数据 在使用 App 时是不可用的 接下来 我们要检查授权状态是否 被拒绝或者被限制 在这里 我们要确保授权状态既不会被拒绝 也不会受到限制 如果授权状态是已授权 那我们可以继续 如果授权状态未知 且此用户之前没有被提示授权信息的话 那么系统将显示授权申请信息 一旦 App 被授权 可以使用 Motion 和 Fitness 活动信息 我们可能会向 Core Motion 发出请求来提供相对高度更新 这个对以前创建的 CMAltimeter 对象的调用向我们传递了 我们希望接收更新的操作队列 同时还提供了一个处理程序用以运行每次通过 Core Motion 传递给我们的新数据 在本例中 我们将操作队列设为主队列 因为我们将在处理程序中更新 UI 让我们来到处理程序 它传递给我们一个 CMAltitudeData 对象 这包含了我们可能感兴趣的值 或者一些错误 如果在更新中 有异常情况发生 在确保我们没有需要处理的错误后 我们只需从 CMAltitudeData 中 获取 relativeAltitude 的值 把它存为浮点型 并用它来更新 UI 正如之前所提到的那样 我们可以 轻易地使用时间戳和压力属性 一旦我们不需要更新 我们就会用之前使用的 CMAltimeter 来告诉 Core Motion 停止相对高度的更新 就是这样
要了解更多关于 Apple Watch 的开发和 使用 URLSession 和 Core Motion 的信息 请查看以下页面的参考资料链接 谢谢
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。