애플리케이션 권한
오늘날 디바이스와 운영 체제의 많은 기능은 오용될 경우 개인정보 보호, 보안 및 성능에 중대한 영향을 미칠 수 있습니다. 따라서 이러한 기능에 액세스하기 전에 사용자의 명시적인 동의를 요구하는 플랫폼이 점점 더 보편화되고 있습니다.
Qt 권한 API를 사용하면 애플리케이션이 크로스 플랫폼 방식으로 이러한 기능에 대한 권한을 확인하거나 요청할 수 있습니다.
사용법
일반적으로 사용자 동의가 필요한 기능은 기기의 마이크에 대한 액세스입니다. 음성 메모를 녹음하는 애플리케이션의 초기 모습은 아마도 이와 비슷할 것입니다:
void VoiceMemoWidget::onRecordingInitiated() { m_microphone->startRecording(); }
마이크 액세스에 대한 사용자 동의가 필요한 플랫폼에서 이 애플리케이션이 제대로 작동하도록 하기 위해 다음과 같이 확장할 수 있습니다:
void VoiceMemoWidget::onRecordingInitiated() { QMicrophonePermission microphonePermission; switch (qApp->checkPermission(microphonePermission)) { case Qt::PermissionStatus::Undetermined: qApp->requestPermission(microphonePermission, this, &VoiceMemoWidget::onRecordingInitiated); return; case Qt::PermissionStatus::Denied: m_permissionInstructionsDialog->show(); return; case Qt::PermissionStatus::Granted: m_microphone->startRecording(); } }
먼저 마이크 권한의 상태를 이미 알고 있는지 확인합니다. 그렇지 않은 경우 현재 상태를 확인하기 위해 권한 요청을 시작하여 사용자에게 동의를 요청할 수 있습니다. 요청 결과를 이미 사용 중인 슬롯에 연결하여 권한 상태를 다시 한 번 평가할 수 있는 기회를 얻습니다.
이전에 권한이 부여되었거나 거부되었거나, 방금 시작한 요청의 결과를 다시 받은 후 권한 상태를 알게 되면 사용자에게 현재 음성 메모를 녹음할 수 없는 이유를 설명하는 대화창으로 리디렉션하거나(권한이 거부된 경우), 마이크 사용을 계속 진행합니다(권한이 부여된 경우).
참고: macOS 및 iOS에서는 현재 GUI 애플리케이션에 대해서만 권한을 요청할 수 있습니다.
권한 선언하기
일부 플랫폼에서는 빌드 시 요청하는 권한을 미리 선언해야 합니다.
Apple 플랫폼
요청하는 각 권한은 애플리케이션의 파일에 소위 사용 설명 문자열을 첨부해야 합니다. Info.plist
파일에 애플리케이션이 해당 권한에 액세스해야 하는 이유를 설명하는 문자열을 첨부해야 합니다. 예를 들어
<key>NSMicrophoneUsageDescription</key> <string>The microphone is used to record voice memos.</string>
관련 사용 설명 키는 각 권한 유형에 대한 설명서에 설명되어 있습니다.
관련 권한 백엔드가 애플리케이션에 포함되도록 하려면 빌드 시스템에서 사용자 지정 Info.plist
을 가리키세요.
Android
요청하는 각 권한은 애플리케이션의 AndroidManifest.xml
파일에 uses-permission
항목을 첨부해야 합니다. 예를 들어
<manifest ...> <uses-permission android:name="android.permission.RECORD_AUDIO"/> </manifest>
관련 권한 이름은 각 권한 유형에 대한 설명서에 설명되어 있습니다.
사용 가능한 권한
다음 권한 유형을 사용할 수 있습니다:
Bluetooth 주변 장치 액세스 | |
사용자의 캘린더에 액세스 | |
사진 또는 동영상 촬영을 위해 카메라에 액세스 | |
사용자의 연락처에 액세스 | |
사용자의 위치 액세스 | |
사운드 모니터링 또는 녹음을 위한 마이크 액세스 |
모범 사례
최종 사용자에게 최상의 사용자 경험을 제공하기 위해 애플리케이션 권한을 관리할 때 다음과 같은 모범 사례를 채택하는 것이 좋습니다:
- 필요한 최소한의 권한만 요청하세요. 예를 들어 마이크에 대한 액세스 권한만 필요한 경우 만일을 대비해 카메라 권한은 요청하지 마세요. 개별 권한 유형의 속성을 사용하여 권한 범위를 더욱 제한하세요(예: QContactsPermission::setAccessMode()는 읽기 전용 액세스를 요청합니다).
- 사용자의 특정 행동에 대한 응답으로 권한을 요청하세요. 예를 들어, 사용자가 오디오 녹음 버튼을 누를 때까지 마이크 권한 요청을 연기합니다. 권한 요청을 특정 작업과 연결하면 사용자에게 권한이 필요한 이유를 더 명확하게 알릴 수 있습니다. 시작 시 필요한 모든 권한을 요청하지 마세요.
- 필요한 경우 추가 컨텍스트와 설명을 제시하세요. 때로는 사용자의 행동만으로는 충분한 컨텍스트가 제공되지 않을 수 있습니다. 사용자가 작업을 시작한 후 권한을 요청하기 전에 설명 대화 상자를 표시하여 사용자가 나중에 시스템 권한 대화 상자가 표시될 때 어떤 일이 일어날지 알 수 있도록 하세요.
- 권한이 필요한 이유를 투명하고 명확하게 설명하세요. 설명 대화상자 및 사용 설명에서 애플리케이션이 특정 기능을 제공하기 위해 특정 권한이 필요한 이유를 투명하게 설명하여 사용자가 정보에 입각한 결정을 내릴 수 있도록 하세요.
- 거부된 권한에 대한 설명. 여러 가지 이유로 요청하는 권한이 거부될 수 있습니다. 항상 이러한 상황을 고려하여 애플리케이션의 사용 환경을 정상적으로 저하시키지 않고 사용자에게 상황에 대한 명확한 설명을 제공해야 합니다.
- 라이브러리에서 권한을 요청하지 마세요. 권한 요청은 위의 사항에 대해 올바른 결정을 내리는 데 필요한 정보를 얻을 수 있는 사용자와 가능한 한 가까운 곳에서 이루어져야 합니다. 라이브러리는 권한을 확인하여 작업을 수행하기 위한 전제 조건이 있는지 확인할 수 있지만, 권한이 결정되지 않았거나 거부된 경우 라이브러리의 API를 통해 이를 반영하여 애플리케이션이 필요한 권한을 요청할 수 있도록 해야 합니다.
정보 속성 목록 파일 및 Qt Creator: 매니페스트 파일 편집하기를참조하세요 .
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.