Skip to content

Commit 8e8b5e4

Browse files
committed
Catch errors when starting audio session on iOS
1 parent b5ff4a3 commit 8e8b5e4

1 file changed

Lines changed: 17 additions & 14 deletions

File tree

packages/audio_streamer/ios/Classes/SwiftAudioStreamerPlugin.swift

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,21 +65,24 @@ public class SwiftAudioStreamerPlugin: NSObject, FlutterPlugin, FlutterStreamHan
6565

6666
func startRecording() {
6767
engine = AVAudioEngine()
68-
69-
try! AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playAndRecord, options: .mixWithOthers)
70-
try! AVAudioSession.sharedInstance().setActive(true)
71-
72-
let input = engine.inputNode
73-
let bus = 0
7468

75-
input.installTap(onBus: bus, bufferSize: 22050, format: input.inputFormat(forBus: bus)) { (buffer, time) -> Void in
76-
let samples = buffer.floatChannelData?[0]
77-
// audio callback, samples in samples[0]...samples[buffer.frameLength-1]
78-
let arr = Array(UnsafeBufferPointer(start: samples, count: Int(buffer.frameLength)))
79-
self.emitValues(values: arr)
80-
}
69+
do {
70+
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playAndRecord, options: .mixWithOthers)
71+
try AVAudioSession.sharedInstance().setActive(true)
8172

82-
try! engine.start()
83-
}
73+
let input = engine.inputNode
74+
let bus = 0
75+
76+
input.installTap(onBus: bus, bufferSize: 22050, format: input.inputFormat(forBus: bus)) { buffer, _ -> Void in
77+
let samples = buffer.floatChannelData?[0]
78+
// audio callback, samples in samples[0]...samples[buffer.frameLength-1]
79+
let arr = Array(UnsafeBufferPointer(start: samples, count: Int(buffer.frameLength)))
80+
self.emitValues(values: arr)
81+
}
8482

83+
try engine.start()
84+
} catch {
85+
eventSink!(FlutterError(code: "100", message: "Unable to start audio session", details: error.localizedDescription))
86+
}
87+
}
8588
}

0 commit comments

Comments
 (0)