VibrationFeature.swift 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //
  2. // vibrationFeature.swift
  3. // Pods
  4. //
  5. // Created by janejntang on 2024/11/20.
  6. //
  7. import AVFAudio
  8. class VibrationFeature {
  9. private var vibrationTimer: Timer?
  10. private let vibrationInterval = 0.1
  11. private let maxVibrationTime = 60.0
  12. private lazy var enableVibrationMode: Bool = {
  13. return ConferenceSession.sharedInstance.implementation.enableVibrationMode
  14. }()
  15. func playVibrate() {
  16. guard enableVibrationMode else { return }
  17. var vibrationCount = 0
  18. let vibrationTotalCount = Int(maxVibrationTime / vibrationInterval)
  19. vibrationTimer = Timer.scheduledTimer(withTimeInterval: vibrationInterval, repeats: true) { [weak self] timer in
  20. guard let self = self else { return }
  21. guard UIApplication.shared.applicationState == .active else { return }
  22. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
  23. vibrationCount = vibrationCount + 1
  24. if vibrationCount >= vibrationTotalCount {
  25. self.stopVibrate()
  26. }
  27. }
  28. }
  29. func stopVibrate() {
  30. vibrationTimer?.invalidate()
  31. vibrationTimer = nil
  32. }
  33. deinit {
  34. debugPrint("deinit:\(self)")
  35. }
  36. }