SuperAPI AI 工具集

axiom-now-playing

编程与开发

查看项目

更新于 10-16 00:23

技能介绍

用途:帮助排查与实现 iOS 18+ 上的 Now Playing 集成,覆盖锁屏与控制中心信息不显示、播放/暂停/跳转命令无响应、封面缺失或闪烁、播放状态同步错误等问题。

核心前提(资料观点):Now Playing 生效需三件事同时满足——AVAudioSession 激活、远程命令处理器注册、元数据发布;此外应用需注册至少一个远程命令,并使用非混音(non-mixable)的 AVAudioSession 类别,否则系统不会认可。

主要能力与内容:提供分模式的排错路径,包括 AVAudioSession 配置、远程命令注册、封面配置、状态同步、CarPlay 与 MusicKit 相关内容。资料给出诊断步骤:检查 session 的 category、mode、options 与是否激活;确认 Info.plist 含 UIBackgroundModes 的 audio;检查命令是否已添加 target 且 isEnabled = true;检查 nowPlayingInfo 的标题、封面、时长、已播时间与播放速率。决策树按“信息完全不出现 / 短暂出现后消失 / 命令无响应 / 封面异常 / 状态不同步 / CarPlay / MusicKit”分支定位问题模式。

使用方式(必要命令保持原样):通过 print 检查 AVAudioSession.sharedInstance() 的 category、mode、categoryOptions 与 setActive(true);通过 MPRemoteCommandCenter.shared() 检查 playCommand.isEnabled、pauseCommand.isEnabled;通过 MPNowPlayingInfoCenter.default().nowPlayingInfo 检查各字段。正确做法包括:使用 .playback 且不加 .mixWithOthers,播放前先激活 session,停止后以 .notifyOthersOnDeactivation 停用;为命令 addTarget 并设 isEnabled = true,skip 命令先设置 preferredIntervals 再添加 target,并在 deinit 中 removeTarget;封面使用 MPMediaItemArtwork 并在闭包中按请求尺寸返回图像,采用单入口与优先级(内嵌 > 缓存 > 远程)避免竞态与闪烁。

适用场景:初次实现 Now Playing,或调试已有实现中的锁屏/控制中心、远程命令、封面与状态同步问题,含 CarPlay 与 MusicKit/Apple Music 集成相关章节。

限制与注意:资料面向 Swift 6.0+、iOS 18+、Xcode 16+;iOS 26 的 Liquid Glass 为系统自动行为,无需改代码。部分内容(如 CarPlay 的 com.apple.developer.carplay-audio 权限、MusicKit 不手动设置 nowPlayingInfo 等)仅点到模式编号,正文未展开完整代码;模拟器与真机音频栈存在差异。其余细节与官方文档请以资料所述模式为准,暂未提供的部分不在此展开。