QMLアプリケーションのパーミッション
今日のデバイスやオペレーティングシステムの多くの機能は、悪用されるとプライバシー、セキュリティ、パフォーマンスに重大な影響を及ぼす可能性があります。そのため、これらの機能にアクセスする前にユーザの明示的な同意を必要とするプラットフォームがますます一般的になってきています。
Qt Qml Coreモジュールは、Qt C++Application Permissions の機能を QML に公開します。
ユーザの Bluetooth 周辺機器へのアクセス | |
ユーザのカレンダーへのアクセス | |
カメラへのアクセス | |
ユーザーの連絡先へのアクセス | |
ユーザーの位置情報へのアクセス | |
マイクへのアクセス |
使用方法
アプリケーションで特定のパーミッションをチェックしリクエストするには、適切なパーミッション・タイプのインスタンスをインクルードし、必要であればそのプロパティを設定します:
CalendarPermission { id: calendarPermission accessMode: CalendarPermission.ReadWrite }
このタイプは、パーミッションの現在の状態をチェックするために使用することができます:
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 } } ]
上記の例では、パーミッションのステータスが許可されていない場合、2つのパーミッション固有の項目がオーバーレイ表示されます。リクエスト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
にアップグレードする場合、プラットフォームは3つの方法のうちの1つで応答する:
- 例えば、プラットフォームが2つのアクセスモードを区別しないため、暗黙的に拡張許可を与える。
- ステータスをUndeterminedに戻すことで、拡張されたパーミッションへのア クセスをユーザーに再度問い合わせることができるようにする。
- ステータスを
Denied
に移動することで、例えば、最初に要求されたパーミッションのアップグレードができない場合。
これらのステータスはすべて、アプリケーションの UI を適切なステー トに移動させ、そこでユーザに新しいステータスを通知し、可能であれば新しいパーミッションを要求するか、より拡張されていないパーミッシ ョンに戻すことができるようにする。
パーミッションアイテム間の相互作用
パーミッションの状態は、最終的には基礎となるアプリケーションに結びつきますが、各パーミッションアイテムは、他のすべてのアイテムから独立してそれ自身のステータスを報告し、必要であれば独立してリクエストされる必要があります。
例えば、あるアイテムのカレンダーアクセスをリクエストしても、他のCalendarPermission アイテムのステータスは更新されません。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。