iOS授权:如何以及何时?

您已经在iOS应用程序中拥有什么样的权限? 对于应用程序,在首次运行时要求访问许多功能是很常见的:相机,位置,媒体库等。但是,建议仅在必要时和仅在应用程序使用它们时才询问它们。

在本文中,我们将看到如何以及何时向用户寻求许可。

一般来说,权限可以具有以下状态:

  • notDetermined :用户尚未获得访问授权请求
  • 受限 :该应用可以具有受限权限,例如:家长模式
  • 拒绝 :用户已明确拒绝许可
  • 授权 :用户授权该应用访问该功能。 该应用可在需要时免费使用该功能

应用程序可以请求许可,您的应用程序工作流必须考虑到用户可以从其系统设置中更新所有授权。

先决条件:更新plist

请求访问功能的第一步步骤是使用许可密钥和简短说明更新plist。 例如,对于摄像机,应添加NSCameraUsageDescription ,对于位置,应为NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescription等。

关联的值是将在系统授权弹出窗口中显示的句子。 有必要尽可能多地描述您为什么需要它。 如果不添加此描述,该应用程序将停止并且不会通过Apple验证。

完整的密钥列表可以在这里找到:

现在,我们将看到一些有关如何请求授权的示例。

位置

首先,您可以要求两种不同的授权类型:始终或使用时。 在iOS 10中,默认情况下,即使您请求“始终”许可,应用程序也会要求“使用时”授权。 进行此限制是为了强制开发人员仅在必要时启用“始终”选项,并保留用户的选择权。

此类型的权限将具有2个授权状态:authorizedAlways或authorizedWhenInUse。

要请求位置授权,您仅需要根据情况使用此功能:

调用此函数时可以找到当前状态:

相机

根据用于访问摄像机的类(UIImagePickerViewController或AVCaptureDevice),授权系统对于请求将有所不同。 第一个仅请求更新plist文件,显示UIViewController时,系统将自动提示用户。 第二个将要求调用此函数:

但是,如果您需要摄像机的授权状态,则对于两个摄像机用例,该功能是相同的:

日历

以与调用AVCaptureDevice授权请求相同的方式,通过功能requestAccess显示权限弹出窗口:

以及授权状态:

通知事项

对于通知授权,UNUserNotificationCenter类负责请求授权。

唯一的不同是您询问通知的当前状态的方式:

苹果公司的建议非常明确:

“仅在您的应用明确需要时才请求个人数据。”,Apple,人机界面指南

一般而言,用户越来越怀疑应用程序在首次启动其应用程序时立即请求许可,甚至无法访问主要功能。 他们期望仅在访问需要授权的功能时才会询问他们。 不要犹豫,添加一个步骤,描述您的应用程序为何需要此授权。

Wassa是室内定位计算机视觉方面创新数字代理专家。 无论您是想帮助客户在建筑物中找到自己的出路,增强产品的用户体验,收集有关客户的数据还是分析某个地点的人流量和行为,我们的创新实验室都将科学的专业知识带给您最大的设计灵感根据您的目标调整解决方案。

在 – 找到我们:

·Facebook和Twitter

·领英

·GitHub

· 我们的网站