大多数浏览器和
Developer App 均支持流媒体播放。
-
Apple Silicon Mac 上的 iPad 与 iPhone App 运行
Apple Silicon Mac 可以按原样运行许多 iPad 与 iPhone App,用户可以从 Mac 的 Mac App Store 中对这些 App 进行获取。了解 iPad 与 iPhone App 将会如何在 Apple Silicon Mac 上运行,以及为你的 App 在此平台提升质感的各种因素。学习如何为 Mac 进行 App 测试与 App 的分销选项。
资源
相关视频
WWDC21
WWDC20
WWDC19
-
下载
大家好 欢迎来到 WWDC
欢迎来到“Apple 芯片 Macs 上的 iPad 和 iPhone Apps” 我叫 Jason Beaver 稍后 我的同事 James Snee 和 Patrick Heynen 也将与大家见面 正如你可能在 Keynote 演讲或 State of the Union 看到的那样 Apple 芯片上的 Big Sur 允许你在 Mac 上运行 iOS app 而无需重新编译 Mac 是一个强大的开发平台 可支持各种 app 应有尽有 包括强大的桌面 app 以 web 为基础的体验 和图形密集的游戏 这些体验都是 由专用的用户界面框架提供的 在 macOS Catalina 中 我们增加可通过使用 Mac Catalyst 为 Mac 构建 iOS app 的功能 Mac Catalyst 使 UIKit 成为 Mac 上其他用户界面框架的 本机对等体 并使你能够将 iOS app 的 一流的体验带到 Mac 上 你可以参考去年的 《Mac 版 iPad app 介绍》会话 来了解我们的做法 Mac Catalyst 需要使用 macOS SDK 构建 app 并使你能够自定义和优化 app 以充分利用 Mac
在 macOS Big Sur 中 我们正在利用 Mac Catalyst 基础设施 使现有 iOS app 能够在 Mac 版的 Apple 芯片中 原样运行 这里的“原样运行” 真的就是指无需任何更改 我们允许 Mac 用户通过 Mac App Store 购买或下载 你在 iOS App Store 所提供的 app 它是完全相同的二进制
因为这些 app 使用了 与 Mac Catalyst app 相同的 底层基础设施 那就是相同的统一框架 以及相同的 iOS 框架 并与 Mac 集成在一起 这样你的 iPad 和 iPhone app 就能自动获得大量的行为 使其可在 Mac 上完美顺畅运行
然而 它们并不能使用 Mac app 可提供的所有功能 如果你想在 Mac 上进一步推广 iOS app 可以通过在 Xcode 中进行切换 来创建 Mac Catalyst 版本 这将使你能够自定义 你的 app 在 Mac 上的行为 并允许你 在所有 Mac 上发行 app 而不只是那些 运行 Apple 芯片的 Mac 要想让你的 app 在 Mac App Store 中可用 它就必须与 Mac 兼容 你的 app 不能依赖于 不可用的符号或框架 不能依赖于现有框架中缺失的功能 也不能依赖于 Mac 上不存在的 硬件功能
兼容的 iOS app 在 Mac App Store 中自动可用 但是你可以在 app Store Connect 中 管理 app 的可用性 你可能会选择不在 Mac App Store 提供 iOS app 比如你已经拥有 或者正计划推出一款 Mac app 或者你的 app 在 Mac 上无法运行 Patrick 将在稍后的会话中 进一步讨论这个问题
大多数现有的 iPad 和 iPhone app 在 macOS 上运行良好 但是你应该注意到 运行这些 app 的某些环境差异 这些差异可分为三类 硬件差异、用户界面差异 以及系统软件差异 我们先从硬件差异说起 iOS 是基于 直接多点触控的交互模型构建的 而 macOS 则是由间接的 基于光标的交互模型构建的 基础设施自动映射多种多点触控手势 但如果你的 app 使用自定义触控处理 则应先测试你的 app 是否与 Mac 兼容 如果你的 app 支持键盘输入 作为自定义触控处理的替代方法 这也能让你的 app 与 Mac 具有更好的兼容性 以及拥有更好的 iOS 体验
iOS 设备有一系列 Mac 不具备的传感器 如加速感应器、陀螺仪、磁力计 深度感应相机和 GPS 通过在代码中动态确认适当的传感器存在 则可确保你的 app 与所有 iOS 设备兼容 同时也与 Mac 兼容 请注意 并非所有 依赖于这些传感器的 API 都无法在 Mac 上工作 例如 即使 Mac 不包含 GPS 接收器 也能支持 Core Location 并可以向 app 提供位置信息 虽然它的精度会低于 GPS iOS 设备通常只有前置和后置摄像头 而 Mac 则可能有内置前置摄像头 类似于我们的笔记本电脑和某些台式机 但也可以包括 内置在外部显示器中的摄像头 或者通过 USB 插入的摄像头 iOS app 可能无法处理所有这些配置 但是通过使用 AVCaptureDeviceDiscoverySession 而不是枚举所有 AV 捕捉设备 则能允许我们确保你的 app 可以访问 最适合你的相机 现在 我们来谈谈用户界面的一些区别
正如我们之前所述 iOS app 可自动 从 macOS 获得大量系统行为 这必然会与 iOS 设备上的 外观和行为有所不同 例如 警报和弹出窗口 可能显示在 Mac 上的不同位置 而 Open 与 Save 面板 则会显示在单独的窗口中 这说明 你的 app 不会硬编码 任何关于用户界面的假设 这一点很重要 比如像系统用户界面的位置 因为这些假设在 Mac 上运行时 可能是错误的 在 macOS 中 窗口的大小通常可由用户调整 如果你的 iPad app 已经支持 iOS 的 多任务处理 那它在 macOS 上则可以自由调整尺寸 也就是说它可以在多种尺寸内运行 而不只是 iOS 多任务支持的 少数固定尺寸内 使用自动布局将帮助你确保 你的 app 可以在任何尺寸下正确运行 在 macOS 上也可以调整窗口大小 优化 app 布局的性能 将改善 Mac 上的尺寸调整体验 并使你的 app 在 iOS 上处理多任务时 响应更快 如果你的 iPad app 不支持多任务处理 或者你有一款 iPhone app 则它只能在固定尺寸的窗口中运行 并且不能调整大小 现在让我们来看看系统软件的差异 在 iOS 上 app 位于标准位置内 而在 macOS 上 用户却可以随心所欲地移动 app 你的 app 的数据容器 也在 Mac 上的另一个位置 如果使用 Foundation API 来定位文件系统中的项 那么你就能够忽略所有这些差异 而且你的 app 在 Mac 上运行时 也不会出现任何问题
有些系统 API 会显示你的 app 正在 Mac 上运行 例如 如果你已经对系统的某些部分 进行了硬编码 无论是在设备上还是在服务器上 如果只对 iPhone、iPod Touch 或 iPad 等设备进行了硬编码 则在 Mac 上运行 iOS app 时 可能会遇到问题 最好确保你的软件能够可靠地处理意外值 并返回到某些默认行为 其他设备属性 如屏幕尺寸 在不同 Mac 之间的差异很大 你的 app 不应假设为 将与 iOS 设备中的其中一个 屏幕分辨率相匹配 现在 我将让我的同事 James 继续这个会话 他将讨论如何在 Mac 上测试和调试 你的 iOS app
谢谢 Jason 能够在 Apple 芯片 Mac 上 本机运行 iPhone 和 iPad app 可让你接触到全新的用户群 通过 macOS Big Sur Apple 已经尽了最大努力 让你只需付出最少的努力 就能实现这一目标 我肯定你想看看你的 app 在 Apple 芯片 Mac 上运行时的样子 正如 Jason 提到的 你的 app 可能会做出一些假设 而这些关于设备运行的假设 在 Mac 上不再适用 这里的目标是确保你的 app 正常运行 并且没有任何重大的用户界面故障 或意外行为 好消息是 Xcode 提供了强大的支持 可在 Mac 上本机调试、测试和分析 iPhone 和 iPad app 就像在模拟器或 iOS 设备上运行一样 让我演示一下它的工作原理
我在 Xcode 中打开了一个 iOS app 项目 你们有些人可能从之前的会话中见过它
为了在 Apple 芯片 Mac 上 运行 iOS app 你只需选择新的运行目标 我的 Mac Designed for iPad 那么 让我们继续构建并运行这个 app 吧
我想说的是 这款 app 是基于 iOS SDK 构建的 除了 Jason 提到的屏幕边界情况 你不需要对源代码进行任何更改 就可以运行此程序 这款 iOS app 在 Apple 芯片 Mac 上 本机运行 它是基于 iOS SDK 构建的 不在模拟器中运行 当我点击着各种视图时 我可以验证它的行为 是否与 iPhone 上的行为相同
除了运行 iPhone 和 iPad app 外 我们还提供了 Xcode 所有强大的调试 和分析功能
当 app 运行时 你可以通过查看 Xcode 的调试量表 获得其性能的高级视图
你可以看到它消耗了 多少中央处理器时间和内存 以及它可能执行的任何网络和磁盘 I/O
如果你想更有针对性地查看 app 的行为 你可以暂停它或设置断点 并使用 Xcode 最棒的调试功能之一 就像在 iPhone 或 iPad 上的做法 例如 调试器的常见用法 是调查 app 响应用户操作的状态 让我展示一下这款在 Mac 本机 运行的 iOS app 是如何工作的
我将在这个 IBAction 方法中设置断点 我要通过点击 app 中 这个 Useful 按钮来触发它
你会看到触发这个断点时的响应 Xcode 提供了它的调试接口 一旦进入调试器 你就可以 使用你所期望的所有功能 例如检查变量和评估表达式 要研究更具体的问题 可以浏览内存以及查看调试器 为了了解或跟踪 app 的性能 你可以用 Instruments 最后 我相信你一定想知道测试 测试可以很好地验证 你的软件是否按照预期运行 我为你示范一下
通过 Xcode 你就可以在 Apple 芯片 Mac 上 本机运行 iOS app XCTest 单元测试 我将通过点击 Test Navigator 中的“运行” 来执行这些测试
与运行 app 一样 这些测试也是基于 iOS SDK 构建的 并在本机运行
太棒了 测试通过了
Xcode 提供了一组很棒的工具 可以帮助你调试、测试和分析 在 Apple 芯片 Mac 上 本机运行的 iPhone 和 iPad app 现在 将由 Patrick 来讨论在 Mac 上 发行 iPhone 和 iPad app 的问题
既然我们已经了解 iPad 和 iPhone app 的工作原理 那就来谈谈这些 app 是如何 在用户和团队成员 将要运行的 Mac 上使用的
好消息是 你的 iOS app 在 Mac 上的发行工作 就跟现在 iPad 或 iPhone 上的流程一样 你现在所熟悉的所有工作流 都可得到无缝扩展 只需将 Mac 添加到 app 支持的设备系列中
要想让 app 在 Mac 上可用 那你只需 签署新的开发者协议 那么你的兼容 app 将在本年稍后 就能在 Mac App Store 上可用
对于新提交的 app Mac 的发行版将无缝匹配到 你现有的开发工作流中
在 Xcode organizer 中 你可以通过 App Store Connect 导出 app 以准备在 Mac 上运行 也可以使用任何本地发行选项 例如 ad hoc 企业或发展 将 iPad 或 iPhone app 的版本 直接发行给你的团队成员 如果你的 app 利用了 App Store 的功能 那么在 Mac 上运行 iPad 或 iPhone app 时 都将得到支持 用户在 Mac 上运行时 可随时访问与 iPad 或 iPhone app 关联的 任何 app 内购买和订阅项目 并可以使用 StoreKit 框架进行新的购买 如果你的 app 使用按需资源 来动态管理为 app 下载的内容 那么在 Mac 上运行的体验也是一样的 事实上 App Store 的所有功能 都像在 iPad 和 iPhone 上工作一样
App 细化也已经扩展到 可在 Apple 芯片 Mac 上运行 App 的内容会自动选择 最适合在 Mac 上运行的内容 而最适合其他 iPad 或 iPhone 设备的 不适用资源则会被排除在外 以获得简化的安装体验 事实上 对于 app 细化来说 新的 Mac 看起来 就像其他性能非常好的 iPad
要支持此工作流 Xcode 在 Organizer 导出工作流中为 Mac 添加了一个新的虚拟细化目标 使用 Mac 设备生成的优化安装变体 可用于在任何 Apple 芯片 Mac 上 运行或测试
请注意 因为 Mac 用户习惯了 在计算机和可移动存储之间 无缝移动应用 所以只需要一个 单一的 app 变体和细化目标
如果你的 app 依赖于 开发者或特殊发行 那它就像在 iPhone 和 iPad 上运行一样 好消息是 你可像在其他 iOS 设备上一样 通过导出程序 把 iPhone 或 iPad 的 app 安装到 Mac 上 如果你利用了无线安装的优势 那么发行到 Mac 上不需要任何更改 Mac 将自动从你的 OTA 清单中 选择适当变体进行下载 并在适当配置的 Mac 上运行
对于涉及托管设备的方案 iPad 和 iPhone app 可以推送到 注册的 Mac 电脑上 就像其他设备一样
虽然在 Mac 上的发行非常简单 但 Mac 是一个独特的平台 并且在部署到 Mac 时 需要考虑某些关键点
TestFlight 不适用于 Mac 所以在最终提交之前的任何预发行版 将需要使用 ad hoc 发行版或开发发行版 作为测试 app 的替代方案 此外 正如 Jason 之前提到的 iPad 和 iPhone app 在 Mac 上的运行时 兼容性也有限制
Xcode 会表明你的 app 是否硬性依赖 在 Mac 上不可用的符号或框架 但为评估你的 app 在 Mac 上的用户体验 在可用的 Apple 芯片 Mac 硬件上 测试你的 app 也算是个好办法
我们已经使你的 app 可以轻松进入 Mac App Store 为确保你的客户在 Mac 上 使用 iOS app 时 获得最佳体验 App Store Connect 将提供工具 来帮助你在今年夏末时候 测试和验证这种体验 当然 你仍然可以选择 你的 app 是否可用于 Mac App Store
现在让我们看看你如何控制它
在签署《开发者协议》后 你所有兼容的 app 都将自动在 Mac 上可用 使用 App Store Connect 查看 所有 app 的状态
在 App Store Connect 中 定价和可用性页面 可让你选择是否 在 Mac App Store 上发行你的 app 如果你不想在 Mac 上发行这款 app 只需取消选中此复选框 那么它将不再在 Mac App Store 上出售
请注意 一旦你的 app 不可用 Mac 用户将不再能够重新下载 你的 app 的现有版本 直到该 app 再次在 Mac 上可用
嗯 应该都弄清楚了吧 你的 app 可以本机运行在 Apple 芯片 Mac 上 无需更改 用户会喜欢在他们的桌面上运行 你的 app 的能力 大多数功能都能正常工作 app 的运行 也适应了熟悉的 Mac 用户体验 构建和调试 不过是你已经知道并懂得使用的工具 所以只需在 Apple 芯片 Mac 上 测试你的 app 就可确认你的 app 是否运行顺畅 这样很快你就会有一批全新的用户 在 Mac App Store 上享受你的 app
感谢观看
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。