---
title: "别急着向用户索取App权限：先制定策略"
locale: "zh-hans"
language: "zh-Hans"
published: "2016-06-16T13:05:33+08:00"
updated: "2026-03-17T23:07:22.697Z"
canonical: "https://accordhk.com/blog/zh-hans/%E5%88%AB%E6%80%A5%E7%9D%80%E8%AE%A9%E4%BD%A0%E7%9A%84app%E4%BB%8E%E7%94%A8%E6%88%B7%E9%82%A3%E3%80%8C%E8%8E%B7%E5%8F%96%E6%9D%83%E9%99%90%E8%AE%B8%E5%8F%AF%E3%80%8D%EF%BC%8C%E8%BF%99%E4%BA%8B"
---

# 别急着向用户索取App权限：先制定策略

你知道平均每个App在用户安装后的前三天内就失去了80%的平均日活吗？大部分用户下载一个App，打开一次，然后就卸载掉它。这种情况发生是因为用户虽然愿意尝试安装很多App，但他们还是要决定在开始那几天究竟卸载掉哪些。 用户这样做是因为你的App做的不好吗？也不全是，但是用户跟你的App在最开始的互动确实很大程度上决定了用户对你的App的整体印象。现在实际情况是，当用户打开一个新的App时，他们最先看到的往往是一连串的弹出框询问他们的权限获取请求。 这样的做法对用户体验产生很大的影响，常常导致用户放弃使用。正确的做法是App应该在提出权限请求前先跟用户保持一定的对话沟通。 一、建立起一套策略 当涉及到权限的许可请求时，最糟糕的事情就是App使用没有任何解释说明的权限请求炮轰用户。不管是询问太早还是一次性询问的太多都是普遍的错误做法。但是实际上，很多的App还是这样做，用户启动App进来首先看到的就是难以理解的请求。例如，Google的Inbox甚至在用户还没有登入到App中时就提出请求，没有附带任何其他的信息或上下文环境。 当你向用户发出权限许可请求时，你当然希望所有用户都能接受这个请求。为了达到这个目标，你应该建立起一套策略。这套策略建立在你所请求的权限类型的清晰度和重要性上。关键性的许可请求应该在一开始提出，次要一些的则可以放在上下文环境中提出。 二、什么时候询问用户 决定用户接受还是拒绝你的请求的最重要的因素之一就是你在何时询问他。 1、一开始只提关键性请求 对许多App来说，没有获取对数据的访问权限可能足以改变整个用户体验过程。例如，如果一个App依赖于短讯服务，那么当获取不到这项权限时，程序就会无法应用。幸运的是，用户大都期望一个消息传送应用能够获取短讯权限，所以这时候预先提出权限请求是非常有意义的。 如果一个功能的正常使用需要多种权限的许可，那就只向用户提出这些权限的许可请求，而不要再提出任何其他不相干的。 2、在上下文使用环境中提出请求 在大多数情况下，如果一个新用户在一开始就要忍受一堆许可请求，那你很有可能就错失掉让用户留下来的关键机会。 App应该在使用过程中结合具体环境提出许可请求并向用户传达该权限的使用价值。因为一旦先引导一个用户留存下来，他们更有可能在使用中接受你的请求。 三、如何询问用户 App得向用户阐明为何每一项权限都是必需的，不管是通过功能名称还是一个解释说明。请记住，如果你想要征得用户的同意，你必须恰到好处地询问用户。 1、解释可得利益 不太清楚的权限请求应该告诉用户它涉及到什么。如果你的App有一个引导演示，记得以此来解释你的程序能干什么以及为什么那些意料之外的权限也是必需的。 在上下文使用环境中解释一个权限是另外一种做的很好的例子——它提起普通用户的兴趣并增加他们对该权限的理解。一定要去试图解释用户在授权后他们能从中获取什么益处。 2、请求的同时给予引导 Foursquare通过提供一个背景图片用来解释为何App需要这个特定的权限从而引导用户做出选择。 3、实际许可请求前的「前置对话」 你只能引发iOS每个功能默认权限请求一次。对用户来讲最糟心的事情可能是用户在系统层级禁止了相关权限，而当他要针对某个App重新授权的时候是很麻烦的。在大多数情况下，在实际的iOS系统权限访问页面前放一个前置的请求是更好的。 4、在动作触发后询问 用户触发功能所唤起的请求对话框能更好的发挥作用，因为它们出现在用户想要使用某功能的时候，用户更有可能授予这个权限。 四、如何处理被用户拒绝访问的权限 因为拒绝一项权限就可能会使得某个功能没法出现预期的结果，因此一旦有权限被禁止掉，要向用户解释说明。 关键性的权限：如果一个App因为一项关键性的权限被禁止掉而无法正常运行，解释给用户为什么该权限必须被允许并提供给用户一个链接路径好让用户重新设置允许它。 五、结论 虽然毫无疑问每个App都是不同的，你都应该仔细考虑什么时候用户需要访问他们手机中的某些权限/数据，并确保他们是有被询问的预期的。提升用户体验是一个持续不断的过程，不要错失准备让你的用户接受请求许可的机会，测试每种情况看看哪种最适合于你们。 http://www.hksilicon.com/articles/1110046

## 重点摘要

开始时只请求关键权限，其他权限则结合具体使用场景提出。说明授权的好处，在系统提示前做好引导，并在关键权限被拒绝后提供重新开启的方法。

你知道平均每个[App](<http://app-developer-hongkong.com>)在用户安装后的前三天内就失去了80%的平均日活吗？大部分用户下载一个[App](<http://app-developer-hongkong.com>)，打开一次，然后就卸载掉它。这种情况发生是因为用户虽然愿意尝试安装很多[App](<http://appcompanyhk.com>)，但他们还是要决定在开始那几天究竟卸载掉哪些。

用户这样做是因为你的[App](<http://mobile-application-development-company.com>)做的不好吗？也不全是，但是用户跟你的[App](<http://mobileapplicationdevelopmentcompanyhk.com>)在最开始的互动确实很大程度上决定了用户对你的App的整体印象。现在实际情况是，当用户打开一个新的[App](<http://app-development-hongkong.com>)时，他们最先看到的往往是一连串的弹出框询问他们的权限获取请求。

这样的做法对用户体验产生很大的影响，常常导致用户放弃使用。正确的做法是[App](<http://appdeveloperhongkong.com>)应该在提出权限请求前先跟用户保持一定的对话沟通。

一、建立起一套策略  

当涉及到权限的许可请求时，最糟糕的事情就是[App](<http://hongkongappdeveloper.com>)使用没有任何解释说明的权限请求炮轰用户。不管是询问太早还是一次性询问的太多都是普遍的错误做法。但是实际上，很多的[App](<http://appdevelopmenthk.com>)还是这样做，用户启动[App](<http://appcompanyhongkong.com>)进来首先看到的就是难以理解的请求。例如，Google的Inbox甚至在用户还没有登入到[App](<http://appscompanyhk.com>)中时就提出请求，没有附带任何其他的信息或上下文环境。

当你向用户发出权限许可请求时，你当然希望所有用户都能接受这个请求。为了达到这个目标，你应该建立起一套策略。这套策略建立在你所请求的权限类型的清晰度和重要性上。关键性的许可请求应该在一开始提出，次要一些的则可以放在上下文环境中提出。

二、什么时候询问用户  

决定用户接受还是拒绝你的请求的最重要的因素之一就是你在何时询问他。

1、一开始只提关键性请求

对许多[App](<http://app-developer-hongkong.com>)来说，没有获取对数据的访问权限可能足以改变整个用户体验过程。例如，如果一个[App](<http://appcompanyhk.com>)依赖于短讯服务，那么当获取不到这项权限时，程序就会无法应用。幸运的是，用户大都期望一个消息传送应用能够获取短讯权限，所以这时候预先提出权限请求是非常有意义的。

如果一个功能的正常使用需要多种权限的许可，那就只向用户提出这些权限的许可请求，而不要再提出任何其他不相干的。

2、在上下文使用环境中提出请求

在大多数情况下，如果一个新用户在一开始就要忍受一堆许可请求，那你很有可能就错失掉让用户留下来的关键机会。 [App](<http://mobile-application-development-company.com>)应该在使用过程中结合具体环境提出许可请求并向用户传达该权限的使用价值。因为一旦先引导一个用户留存下来，他们更有可能在使用中接受你的请求。

三、如何询问用户  

[App](<http://mobileapplicationdevelopmentcompanyhk.com>)得向用户阐明为何每一项权限都是必需的，不管是通过功能名称还是一个解释说明。请记住，如果你想要征得用户的同意，你必须恰到好处地询问用户。

1、解释可得利益

不太清楚的权限请求应该告诉用户它涉及到什么。如果你的App有一个引导演示，记得以此来解释你的程序能干什么以及为什么那些意料之外的权限也是必需的。

在上下文使用环境中解释一个权限是另外一种做的很好的例子——它提起普通用户的兴趣并增加他们对该权限的理解。一定要去试图解释用户在授权后他们能从中获取什么益处。

2、请求的同时给予引导

Foursquare通过提供一个背景图片用来解释为何[App](<http://appscompanyhongkong.com>)需要这个特定的权限从而引导用户做出选择。

3、实际许可请求前的「前置对话」

你只能引发iOS每个功能默认权限请求一次。对用户来讲最糟心的事情可能是用户在系统层级禁止了相关权限，而当他要针对某个[App](<http://mobiledeveloperhongkong.com>)重新授权的时候是很麻烦的。在大多数情况下，在实际的iOS系统权限访问页面前放一个前置的请求是更好的。

4、在动作触发后询问

用户触发功能所唤起的请求对话框能更好的发挥作用，因为它们出现在用户想要使用某功能的时候，用户更有可能授予这个权限。

四、如何处理被用户拒绝访问的权限  

因为拒绝一项权限就可能会使得某个功能没法出现预期的结果，因此一旦有权限被禁止掉，要向用户解释说明。

关键性的权限：如果一个[App](<http://hongkongmobiledeveloper.com>)因为一项关键性的权限被禁止掉而无法正常运行，解释给用户为什么该权限必须被允许并提供给用户一个链接路径好让用户重新设置允许它。

五、结论  

虽然毫无疑问每个App都是不同的，你都应该仔细考虑什么时候用户需要访问他们手机中的某些权限/数据，并确保他们是有被询问的预期的。提升用户体验是一个持续不断的过程，不要错失准备让你的用户接受请求许可的机会，测试每种情况看看哪种最适合于你们。

http://www.hksilicon.com/articles/1110046

## 常见问题

### App应该在一开始请求哪些权限？

只请求App运行或相关功能正常使用所必需的关键权限。如果某项功能需要多个权限，就只请求这些权限，避免提出无关的要求。

### 次要权限应该什么时候请求？

应在用户使用或启动相关功能时，结合具体使用场景提出请求。同时说明授予权限能带来什么价值。

### 为什么要在iOS权限请求前进行预先沟通？

文章指出，iOS每项功能的默认权限请求只能触发一次，拒绝后重新授权可能很麻烦。预先沟通可以帮助用户在系统请求出现前做好准备。

### 用户拒绝关键权限后，App应该怎么办？

解释为什么App正常运行必须获得该权限，并提供链接或操作路径，让用户重新开启权限。
