Ответ
Технически возможно, но с юридическими и платформенными ограничениями.
Реализация (AVFoundation):
import AVFoundation
// 1. Настройка аудиосессии
let audioSession = AVAudioSession.sharedInstance()
try audioSession.setCategory(.playAndRecord, mode: .voiceChat)
try audioSession.setActive(true)
// 2. Создание записи
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let recordingURL = documentsURL.appendingPathComponent("call_recording.m4a")
let recorder = try AVAudioRecorder(url: recordingURL, settings: [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 44100,
AVNumberOfChannelsKey: 2,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
])
// 3. Запуск записи
recorder.record()
Критические ограничения:
-
Правовые требования:
- США: Федеральный закон требует одностороннего согласия (18 U.S.C. § 2511)
- ЕС/РФ: Требуется двустороннее согласие всех участников
- App Store Guidelines 5.1.1: Приложение должно явно запрашивать согласие и информировать о записи
-
Технические ограничения iOS:
- Нельзя записывать системный аудиопоток вызова через CallKit
- Запись возможна только через микрофон устройства во время разговора
- Качество записи зависит от режима аудиосессии
Рекомендации:
- Используйте
AVAudioSession.Mode.voiceChatдля лучшего качества - Всегда сохраняйте записи в
Documents/с шифрованием - Добавьте звуковой сигнал о записи в соответствии с местным законодательством
- Включите описание практики записи в Privacy Policy приложения