You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift音乐播放应用如何通过trackTimeMillis降低服务器请求频率

Swift「正在播放」应用请求频率优化实现

核心实现步骤

你需要先存储iTunes API返回结果时计算的歌曲预计过期时间,不要每次判断时临时计算当前时间加时长,避免逻辑错误:

  1. 先声明存储属性,用来记录当前歌曲的预计播放结束时间:
// 可放在对应的业务类中作为存储属性
private var trackExpireDate: Date?
  1. 当iTunes API返回有效trackTimeMillis参数时,提前计算并存储过期时间:
// trackTimeMillis为接口返回的毫秒级歌曲时长
if let trackTimeMillis = 接口返回的trackTimeMillis可选值 {
    let trackDuration = TimeInterval(trackTimeMillis) / 1000
    // 可根据需求额外增加1-5秒的缓冲时间,避免播放进度误差
    trackExpireDate = Date().addingTimeInterval(trackDuration)
}
  1. 发起请求前做时间判断,仅当当前时间超过过期时间时才执行请求:
var allowRequest = true
if let expireDate = trackExpireDate, Date() < expireDate {
    // 未到过期时间,跳过请求
    allowRequest = false
}

if allowRequest {
    // 此处编写你的服务器请求、iTunes API调用逻辑
}

原代码错误说明

你之前的代码存在几个明显问题:

  • 时间差计算仅取小时单位,完全不适配歌曲通常数分钟的时长场景
  • 语法结构错误,括号、参数逻辑均不匹配
  • 未存储提前计算的过期时间点,每次判断都使用全新的Date()计算,逻辑完全不成立

可选优化

如果存在用户手动切歌的场景,可以额外监听系统播放状态变更事件,切歌时直接重置trackExpireDate为nil,强制触发下一次请求,避免切歌后无法及时同步最新歌曲信息。


内容的提问来源于stack exchange,提问作者Russell Harrower

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 09:15:04