mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
38 lines
1.1 KiB
Swift
38 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()
|
||
|
}
|
||
|
}
|