QML 애플리케이션 권한
오늘날의 기기와 운영 체제의 많은 기능은 오용될 경우 개인정보 보호, 보안 및 성능에 중대한 영향을 미칠 수 있습니다. 따라서 플랫폼에서 이러한 기능에 접근하기 전에 사용자의 명시적인 동의를 요구하는 경우가 점점 더 흔해지고 있습니다.
Qt Qml 의 Core 모듈은 크로스 플랫폼 방식으로 권한을 확인하거나 요청하는 데 사용할 수 있는 일련의 권한 유형을 통해 Qt C++ 애플리케이션 권한 기능을 QML에 제공합니다.
사용자의 블루투스 주변기기 접근 | |
사용자의 캘린더에 대한 접근 | |
사용자의 카메라에 대한 접근 | |
사용자의 연락처에 대한 접근 | |
사용자의 위치 정보에 대한 접근 | |
사용자의 마이크에 대한 접근 |
참고: 사용 가능한 권한유형은 Qt Multimedia 및 Qt Positioning 와 같은 Qt 모듈의 핵심 기능을 포함하지만, 모든 플랫폼별 권한을 포괄하지는 않습니다. 사용자 정의 권한 유형은 현재 지원되지 않습니다.
사용법
애플리케이션에서 특정 권한을 확인하거나 요청하려면, 해당 권한 유형의 인스턴스를 포함시키고 필요한 경우 해당 속성을 설정하십시오:
CalendarPermission {
id: calendarPermission
accessMode: CalendarPermission.ReadWrite
}이 타입을 사용하여 권한의 현재 상태를 확인할 수 있으며, 예를 들어 상태에 기반한 UI를 구동하는 데 활용할 수 있습니다:
states: [
State {
name: "waitingForPermission"
when: calendarPermission.status == Qt.PermissionStatus.Undetermined
PropertyChanges { target: permissionRequestItem; visible: true }
},
State {
name: "permissionDenied"
when: calendarPermission.status == Qt.PermissionStatus.Denied
PropertyChanges { target: permissionDeniedItem; visible: true }
}
]위의 예시에서, 권한 상태가 '허용되지 않음'인 경우 두 개의 권한 관련 항목이 오버레이로 표시됩니다. 요청 UI는 다음과 같이 보일 수 있습니다:
Rectangle {
id: permissionRequestItem
anchors.fill: parent
visible: false
Text {
anchors.centerIn: parent
text: qsTr("We need your permission to access the calendar."
+ "Please tap this screen to request permission.")
}
MouseArea {
anchors.fill: parent
onClicked: calendarPermission.request()
}
}이에 상응하는 권한 거부 UI는 다음과 같습니다:
Rectangle {
id: permissionDeniedItem
anchors.fill: parent
color: "red"
visible: false
Text {
anchors.centerIn: parent
text: qsTr("We need your permission to access the calendar,"
+ "but permission was not granted. Please resolve.")
}
}권한 속성 변경
`request()` 호출을 통해 요청이 시작된 후에도 권한의 속성을 변경할 수 있습니다. 이 경우 새로운 속성 값으로 인해 상태가 변경되면 상태가 업데이트되지만, 새로 설정된 속성 세트를 사용하여 자동으로 요청이 다시 전송되지는 않습니다.
예를 들어, 이미 부여된 캘린더 권한의 액세스 모드를 Qt.CalendarPermission.ReadOnly 에서 Qt.CalendarPermission.ReadWrite 로 업그레이드하는 경우, 플랫폼은 다음 세 가지 방식 중 하나로 응답합니다:
- 플랫폼이 두 액세스 모드를 구분하지 않는 등의 이유로 확장된 권한을 묵시적으로 부여하는 경우로, 이 경우 상태 변경은 발생하지 않습니다.
- 상태를 '미결정(Undetermined)'으로 되돌려, 확장된 권한에 대한 접근 권한을 다시 사용자에게 확인하도록 합니다.
- 예를 들어, 처음 요청된 권한은 업그레이드할 수 없는 경우, 상태를 ‘
Denied’로 변경합니다.
이러한 모든 상태는 애플리케이션의 UI를 적절한 상태로 전환해야 하며, 사용자에게 새로운 상태가 알림과 함께 표시되고, 가능한 경우 새로운 권한을 요청하거나 더 제한적인 권한으로 되돌릴 수 있어야 합니다.
권한 항목 간의 상호 작용
권한 상태는 궁극적으로 기본 애플리케이션과 연결되어 있지만, 각 권한 항목은 다른 모든 항목과 독립적으로 자체 상태를 보고하며, 필요한 경우 독립적으로 요청되어야 합니다.
예를 들어, 한 항목에 대한 캘린더 접근 권한을 요청한다고 해서, 다른 항목 CalendarPermission 의 상태가 업데이트되지는 않습니다. 비록 이 두 항목이 정확히 동일한 속성을 가지고 있다 하더라도 마찬가지입니다.
© 2026 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.