Кажется, что Catalina будет запрашивать у пользователя разрешения для приложения каждый раз, когда что-либо меняется в сборке Xcode.
Например, у меня есть простой пример, который запрашивает разрешение на доступ к микрофону. Когда приложение компилируется и запускается впервые, оно запрашивает доступ к микрофону. Я даю этот доступ. Если я соберу и запустлю снова, ничего не изменив в коде, этот доступ будет сохранен Однако, если я изменю какой-либо код (даже изменив метку Text
на один символ), снова появится диалоговое окно с разрешениями.
import AVFoundation
import SwiftUI
struct ContentView : View {
@ObservedObject private var recorderManager = AudioRecorderManager()
var body: some View {
Text("Recording view")
}
}
class AudioRecorderManager: NSObject, ObservableObject {
override init() {
super.init()
AVCaptureDevice.requestAccess(for: .audio) { allowed in
DispatchQueue.main.async {
if allowed {
print("Allowed")
} else {
print("Not allowed")
}
}
}
}
}
Обратите внимание, что для этого также необходимо добавить Audio Input
к разрешениям и NSMicrophoneUsageDescription
к Info.plist
до его запуска.
Я также заметил, что то же явление происходит с доступом к данным Keychain
.
Это значительно замедляет мое время разработки из-за необходимости подтверждения доступа (или, что еще хуже, введите мой пароль для цепочки для ключей данные) каждый раз, когда я создаю приложение. Есть ли решение, позволяющее Catalina / Xcode дать постоянное разрешение приложению во время разработки?