了解如何将实时活动和小组件引入 carplay 车载和 carplay 车载 ultra,以便用户查看活动进度并一目了然地掌握相关信息。探索所有 carplay 车载 app 均可使用的新增模板选项,并了解导航类 app 如何提供逐向导航元数据,以便显示在车载仪表盘或 hud 上。

视频封面
视频地址

此文章由AI生成,可能存在错误,如有问题,请联系djs66256@163.com

为 CarPlay 车载优化你的应用:iOS 26 新功能详解

随着 iOS 26 的发布,苹果为 CarPlay 车载系统带来了一系列创新功能,使开发者能够为用户提供更加安全、便捷的车载体验。本文将详细介绍这些新功能及其实现方式。

核心功能概述

iOS 26 为 CarPlay 引入了三大关键改进:

  1. 小组件支持 - 让驾驶者快速获取关键信息
  2. 实时活动 - 显示重要进度和状态更新
  3. 导航元数据 - 在仪表盘和HUD上显示转向信息

这些功能不仅适用于专门开发的CarPlay应用,也支持仅提供小组件或实时活动的iPhone应用。

小组件集成

CarPlay现在支持显示iPhone应用的小组件,即使该应用没有专门的CarPlay版本。驾驶者可以在CarPlay仪表盘左侧查看这些小组件。

技术实现要点

开发者为CarPlay添加小组件支持非常简单,只需满足以下条件:

  • 支持systemSmall小组件家族
  • 遵循CarPlay特定的设计规范

对于不适合CarPlay的小组件(如游戏类或需要复杂交互的),可以使用disfavoredLocations修饰符将其标记为”非优选”:

WidgetConfiguration()
    .disfavoredLocations([.carPlay], for: [.systemSmall])

设计最佳实践

  1. 内容简洁直观 - 避免高密度文本和与驾驶无关的信息
  2. 自动适应布局 - widgetContentMargins会根据CarPlay需求自动调整
  3. 使用系统字体和颜色 - 确保文本可读性
  4. 可选背景移除 - 通过containerBackgroundRemovable修饰符实现

实时活动支持

iOS 26将iPhone的实时活动功能扩展到了CarPlay。当iPhone上开启支持的实时活动时,它会自动出现在CarPlay仪表盘。

技术规格

  1. 显示尺寸 - CarPlay使用activity family small尺寸类
  2. 交互限制 - CarPlay中的实时活动不支持交互
  3. 通知机制 - 当仪表盘不可见时,会在屏幕底部显示通知提醒

实现建议

  1. 只传达关键状态信息
  2. 优先实现activity family small尺寸
  3. 无需考虑交互功能

开发者可以使用macOS的CarPlay模拟器应用进行测试,无需实际车辆。

CarPlay框架增强

CarPlay框架为各类车载应用提供了优化的UI模板。iOS 26带来了多项改进:

列表模板升级

  1. CPListImageRowItem新增自定义选项
  2. 支持禁用单个行元素
  3. 允许多行显示
  4. 引入pinned元素API用于显示重要元素
var headerGridButtons: [CPGridButton]?

class CPGridButton
init(titleVariants: [String],
     image: UIImage,
     handler: ((CPGridButton) -> Void)?)

音频应用新功能

体育赛事音频应用现在可以使用专门的”正在播放”模板变体:

let clock = CPNowPlayingSportsClock(elapsedTime: time, paused: false)

let status = CPNowPlayingSportsEventStatus(
    eventStatusText: ["1st"],
    eventStatusImage: UIImage(named: "Semifinals"),
    eventClock: clock
)

let sports = CPNowPlayingModeSports(
    leftTeam: getLeftTeam(),
    rightTeam: getRightTeam(),
    eventStatus: status,
    backgroundArtwork: getBackgroundArtwork()
)

CPNowPlayingTemplate.sharedTemplate.nowPlayingMode = sports

导航应用改进

  1. 按钮自动获得Liquid Glass外观
  2. 支持多点触控交互
  3. 仪表盘地图显示
  4. 转向导航元数据支持

转向导航元数据允许在车辆仪表盘或HUD上显示导航信息:

func mapTemplateShouldProvideNavigationMetadata(_ mapTemplate: CPMapTemplate) -> Bool {
    true
}

cpNavigationSession.add(maneuvers)
cpNavigationSession.add(laneGuidance)

cpNavigationSession.pauseTrip(for: .rerouting, description: "重新规划路线")
cpNavigationSession.resumeTrip(updatedRouteInformation: cpRouteInformation)

性能优化建议

  1. 观察设备温度级别,适当降低渲染细节
  2. 利用CADisplayLink的自动帧率调整
  3. 主屏幕和仪表盘地图可采用不同显示模式
  4. 预先提供转向信息优化性能

总结

iOS 26为CarPlay带来了显著的增强,使开发者能够创建更丰富、更智能的车载体验。通过小组件、实时活动和导航元数据等新功能,应用可以在不分散驾驶注意力的情况下,提供更多有价值的信息和服务。

开发者应充分利用这些新功能,同时遵循苹果的设计规范和性能建议,确保为用户提供安全、流畅的车载体验。

相关视频

小组件的新功能
通过 Instruments 优化 CPU 性能
了解新一代 CarPlay 车载架构
了解新一代 CarPlay 车载设计系统
利用 CarPlay 车载让您的 App 一日千里

文档

Adding StandBy and CarPlay support to your widget