可以通过在 APNS payload 中设置 apns-expiration 来重新设置推送的过期时间。这个时间应该是 UNIX 时间戳,表示为 GMT。
例如:
//设置推送10分钟后过期 payload['aps']['alert'] = message payload['aps']['sound'] = "default" payload['aps']['badge'] = 1 payload['apns-expiration'] = Math.floor(Date.now() / 1000) + 600
检查 VOIP 的状态,确保它正在运行,并且已经获得了正确的权限。
例如:
//检查 VOIP 状态 let voipRegistry = PKPushRegistry.init(queue: DispatchQueue.main) voipRegistry.delegate = self voipRegistry.desiredPushTypes = Set([.voIP]) if let voipPushToken = UserDefaults.standard.string(forKey: "voipPushToken") { voipRegistry.pushToken(for: .voIP) { _, error in if let error = error { print("Push token failed to retrieve for VOIP Push: (error.localizedDescription)") } } } else { print("No VOIP token yet") }
检查设备时间是否正确设置。如果设备时间不正确,可能会导致过期时间不正确。
例如:
//检查系统时间设置 let now = Date() let expirationDate = Date(timeIntervalSince1970: expirationTimeStamp) if now > expirationDate { print("消息已过期") } else { print("消息尚未过期") }