QML 애플리케이션 권한
오늘날 디바이스와 운영 체제의 많은 기능은 오용될 경우 개인정보 보호, 보안 및 성능에 중대한 영향을 미칠 수 있습니다. 따라서 이러한 기능에 액세스하기 전에 사용자의 명시적 동의를 요구하는 플랫폼이 점점 더 보편화되고 있습니다.
Qt Qml Core 모듈은 크로스 플랫폼 방식으로 권한을 확인하거나 요청하는 데 사용할 수 있는 일련의 권한 유형을 통해 Qt C++ 애플리케이션 권한 기능을 QML에 노출합니다.
사용자의 블루투스 주변기기에 대한 액세스 | |
사용자의 캘린더에 대한 액세스 | |
사용자의 카메라에 대한 액세스 | |
사용자의 연락처에 대한 액세스 | |
사용자의 위치에 대한 액세스 | |
사용자의 마이크에 대한 액세스 |
사용법
애플리케이션에서 특정 권한을 확인하고 요청하려면 적절한 권한 유형의 인스턴스를 포함하고 필요한 경우 해당 속성을 설정하세요:
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
으로 업그레이드하는 경우 플랫폼은 다음 세 가지 방법 중 하나로 응답합니다:
- 예를 들어 플랫폼이 두 액세스 모드를 구분하지 않기 때문에 암시적으로 확장된 권한을 부여하여 상태가 변경되지 않습니다.
- 상태를 미정으로 다시 이동하여 사용자에게 현재 확장된 권한에 대한 액세스 권한을 다시 문의할 수 있도록 합니다.
- 예를 들어 처음에 요청된 권한을 업그레이드할 수 없는 경우 상태를
Denied
로 이동합니다.
이러한 모든 상태는 애플리케이션의 UI를 적절한 상태로 이동하여 사용자에게 새 상태를 알리고 가능한 경우 새 권한을 요청하거나 덜 광범위한 권한으로 되돌릴 수 있도록 해야 합니다.
권한 항목 간의 상호 작용
권한 상태는 궁극적으로 기본 애플리케이션에 연결되지만 각 권한 항목은 다른 모든 항목과 독립적으로 자체 상태를 보고하며, 필요한 경우 독립적으로 요청해야 합니다.
예를 들어, 한 항목에 대한 캘린더 액세스 권한을 요청해도 다른 CalendarPermission 항목의 상태는 완전히 동일한 속성을 가지고 있더라도 업데이트되지 않습니다.
© 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.