mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
Swift
38 lines
1.1 KiB
Swift
4 years ago
|
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()
|
||
|
}
|
||
|
}
|