mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
37 lines
1.1 KiB
Swift
37 lines
1.1 KiB
Swift
import AudioToolbox
|
|
import AVFoundation
|
|
|
|
public final class CallRingTonePlayer {
|
|
|
|
public static let shared = CallRingTonePlayer()
|
|
|
|
private var vibrationTimer: Timer?
|
|
private var player: AVAudioPlayer?
|
|
|
|
public func startVibration() {
|
|
vibrationTimer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { _ in
|
|
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
|
|
}
|
|
}
|
|
|
|
public func stopVibrationIfPossible() {
|
|
vibrationTimer?.invalidate()
|
|
vibrationTimer = nil
|
|
}
|
|
|
|
public func startPlayingRingTone() {
|
|
guard let url = Bundle.main.url(forResource: "ringing", withExtension: "mp3") else { return }
|
|
do {
|
|
player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
|
|
player?.numberOfLoops = -1
|
|
player?.play()
|
|
} catch let error {
|
|
print(error.localizedDescription)
|
|
}
|
|
}
|
|
|
|
public func stopPlayingRingTone() {
|
|
guard let player = player else { return }
|
|
player.stop()
|
|
}
|
|
}
|