首页 > 解决方案 > 防止 Catalina 在每个新的 Xcode 构建中请求应用程序权限(如麦克风或钥匙串访问)

问题描述

似乎每次 Xcode 构建中发生任何更改时,Catalina 都会向用户询问应用程序的权限。

例如,我有一个简单的示例,要求获得访问麦克风的权限。第一次编译和运行应用程序时,它会要求访问麦克风。我授予该访问权限。如果我再次构建并运行而不更改代码中的任何内容,则将保留该访问权限。但是,如果我更改任何代码(甚至将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 在开发过程中给予应用程序持久的许可?

标签: xcodemacospermissionskeychainmacos-catalina

解决方案


推荐阅读