Application Permissions

Application Permissions

当今设备和操作系统的许多功能如果被滥用,会对隐私、安全和性能产生重大影响。因此,越来越多的平台在访问这些功能前要求用户明确同意。

Qt 权限 API 允许应用程序以跨平台方式检查或请求此类功能的权限。

使用方法

通常需要用户同意的一项功能是访问设备的麦克风。一个录制语音备忘录的应用程序最初可能是这样的:

void VoiceMemoWidget::onRecordingInitiated()

{

m_microphone->startRecording();

}

为确保该应用程序在需要用户同意才能访问麦克风的平台上运行良好,我们将对其进行如下扩展:

voidVoiceMemoWidget::onRecordingInitiated() { QMicrophonePermissionmicrophonePermission;switch(qApp->checkPermission(microphonePermission)) {caseQt::PermissionStatus::Undetermined: qApp->requestPermission(microphonePermission, this,

&VoiceMemoWidget::onRecordingInitiated);return;caseQt::PermissionStatus::Denied: m_permissionInstructionsDialog->show();return;caseQt::PermissionStatus::Granted: m_microphone->startRecording(); } }我们首先检查是否已经知道麦克风权限的状态。如果不知道,我们会启动权限请求以确定当前状态,这可能会要求用户同意。我们将请求的结果连接到我们已经处于其中的插槽,这样我们就有了另一次评估权限状态的机会。

一旦知道了权限状态,无论是因为我们在早些时候获得了权限还是被拒绝了权限,或者是在从我们刚刚发起的请求中得到结果后,我们都会将用户重定向到一个对话框,解释为什么我们现在不能录制语音备忘录(如果权限被拒绝了),或者继续使用麦克风(如果权限被授予了)。

注意: 在 macOS 和 iOS 上,目前只能为图形用户界面应用程序请求权限。

声明权限

某些平台要求在构建时预先声明所请求的权限。

苹果平台

您申请的每个权限都必须在应用程序的 Info.plist文件中的使用描述字符串,说明应用程序需要访问给定权限的原因。例如

NSMicrophoneUsageDescription

The microphone is used to record voice memos.

每种权限类型的文档中都描述了相关的使用说明字符串。

为确保您的应用程序包含相关权限后端,请将构建系统指向您的自定义Info.plist 。

安卓

您申请的每个权限都必须在应用程序的AndroidManifest.xml 文件中包含一个uses-permission 条目。例如

为确保您的应用程序包含相关权限后端,请将构建系统指向您的自定义AndroidManifest.xml或使用 qt_add_android_permission()。

相关权限名称在每种权限类型的文档中都有描述。

可用权限

可用的权限类型如下:

QBluetoothPermission

访问蓝牙外设

QCalendarPermission

访问用户日历

QCameraPermission

访问照相机以拍摄照片或视频

QContactsPermission

访问用户的联系人

QLocationPermission

访问用户的位置

QMicrophonePermission

访问麦克风,用于监听或录制声音

最佳实践

为确保最终用户获得最佳用户体验,我们建议采用以下最佳实践来管理应用程序权限:

申请所需的最小权限。例如,如果只需要访问麦克风,就不要申请摄像头权限以防万一。使用单个权限类型的属性来进一步限制权限范围,例如QContactsPermission::setAccessMode() 来请求只读访问权限。

根据用户的特定操作请求权限。例如,推迟请求麦克风权限,直到用户按下按钮录制音频。将权限请求与特定操作联系起来,可以让用户更清楚地知道为什么需要权限。不要在启动时请求所有需要的权限。

如果需要,可提供额外的上下文和解释。有时,用户的操作并不能提供足够的上下文。可以考虑在用户启动操作后、请求权限前显示一个解释对话框,这样当系统权限对话框弹出时,用户就会知道将要发生什么。

透明、明确地说明需要权限的原因。在解释对话框和使用说明中,明确说明应用程序提供特定功能需要特定权限的原因,以便用户做出明智的决定。

说明被拒绝的权限。由于各种原因,您申请的权限可能会被拒绝。您应始终考虑到这种情况,优雅地降低应用程序的体验,并向用户清楚地解释这种情况。

切勿从库中请求权限。权限请求应尽可能贴近用户,因为用户可以获得所需的信息,以便就上述各点做出正确决定。图书馆可以检查权限,以确保它们具备开展工作的先决条件,但如果权限未确定或被拒绝,则应通过图书馆的 API 反映出来,以便应用程序反过来请求必要的权限。

🎯 相关推荐

FIFA最新排名出炉:FIFA积分是如何计算的呢?
比分365网页版

FIFA最新排名出炉:FIFA积分是如何计算的呢?

📅 07-14 👁️ 5333
别只盯着支付宝!新年薅羊毛攻略:这些App也能领红包_手机网易网
莹石监控和海康威视(莹石摄像头和海康威视摄像头区别)
Boss直聘中怎么发送简历
bte365官网

Boss直聘中怎么发送简历

📅 09-03 👁️ 7478
世界杯13场进10球的高效杀手 秘鲁最伟大球星:库比拉斯
炮轰抖音,劝张一鸣退休,曾为1亿人做媒的慕岩,正陷入“中年危机”