为什么 Google 智能锁对话框只有“从不”和“保存”两个选项,而没有“否”?

2024-02-20

Smart Lock 弹出对话框只有两个按钮,一个是“从不”,另一个是“保存密码”。如果用户不小心点击了“从不”,SmartLock就会被禁用,直到他使用chrome应用程序删除“从未保存过的密码”项,这对于“懒惰用户”来说步骤太多了,而且很有可能用户可能永远不会使用 SmartLock

In our opinion , if a user doesnt want to save his password to SmartLock just once, its very likely that he will click "never" since the Dialog just has two buttons.... Few of them know if they click anywhere else in the screen they can just dismiss the Dialog.... and once they click never, they lose the chance to enjoy SmartLock ;( So we suggest if google can offer 3 buttons for the Dialog, "never", "no"," save password ", which will be easier for user to understand what they are doing. enter image description here


我在 Google 的智能锁团队工作,我们就这个对话框的措辞争论了几个月,并在实验室中非常仔细地广泛研究了用户交互,并在实时应用程序和网站中对对话框上的数百万个用户操作进行了采样,以监控保存、拒绝、和取消费率。请注意,Never选择仅是对相关应用程序的选择退出,不会影响其他不相关的应用程序。

用户研究和反馈的一些发现:

  • 当询问实验室中的用户如果他们不想选择任何一个选项时他们会做什么(Never or 保存密码),大多数人注意到他们会点击外部或点击后退按钮,这是 Android UI 设计模式中既定的取消操作。因此,如果强烈首选,我们没有发现取消操作的可发现性问题。

  • 在对话框中添加第三个选项会显着使对话框变得复杂(视觉上和认知上),并给用户带来很大的困惑和犹豫不决,因为他们必须处理之间的差异Never and 不,谢谢,而不是在两个选项之间做出更简单的决定。

  • 在实践中,我们发现用户保存密码的偏好很少改变:如果用户拒绝一次,如果稍后再次提示,即使在一段时间后,他们也会压倒性地选择再次拒绝。在实践中,这意味着不,谢谢(不是现在)选项提出了最坏的可能结果:用户无法进入已保存的凭据状态(自动登录),并且每当他们再次登录应用程序时也会反复提示和中断。

因此,当前的实现仅提供两个选项(Never / 保存密码, or 保存帐户对于非密码凭证)引导用户作出决定,使他们处于更好的状态,不会再次提示他们使用此应用程序,或选择从保存的信息中受益。从我们看到的数据来看,在常见的拒绝情况下不不断提示用户的好处远远超过了在之前拒绝后失去的轻松保存的机会。

但这个问题确实提出了一个很好的观点,即从“从不保存”列表中删除应用程序需要很多步骤(可以在 Chrome 设置中完成,密码.google.com https://passwords.google.com,或 Android Google 设置),可能值得重新访问,特别是在意外选择它的情况下,如问题中所述。如果检测到用户保存密码数据的亲和力发生了一些变化(例如,用户开始选择为其他应用程序保存数据),则可能适合提示用户查看他们选择退出的应用程序。

(注意:我们考虑的另一种变化是“从不保存”仅适用于username有问题,但这也增加了很多复杂性和混乱,并且在研究中,用户拒绝的大多数意图根本不是为该应用程序向 Google 保存任何密码信息,用户拥有多个帐户的情况很少见并且只想保存一个,而不是另一个)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Google 智能锁对话框只有“从不”和“保存”两个选项,而没有“否”? 的相关文章

  • Google Map Android API v2 无法在 Play 商店应用程序中显示地图

    我正在与Google Map Android API v2在 Android 应用程序中 它可以很好地与未签名的应用程序在不同的设备上 但是 当我签署 apk 并将应用程序上传到 Play 商店时 下载的应用程序显示白屏而不是地图 您使用什
  • 未找到 ADB screenrecord 命令

    我无法奔跑adb shell screenrecord sdcard my mp4 我尝试运行此命令的设备规格 Honor 5C 安卓6 0 每当我运行 screenrecord 命令时 它都会显示未找到命令 D adb gt adb sh
  • Android 从图库中选择图像显示内存错误

    我正在编写一个代码示例 我必须从图库中选择一个图像 该代码正在运行 但是在从图库中选择图像后 我得到了内存不足错误 in my 活动结果时 我可以获得小图像 但大图像会产生问题 这是我的代码 try Uri selectedImageUri
  • Android 操作系统上的 NFC 堆栈

    有人可以帮助我了解 NFC Android 堆栈的当前状态吗 随着OS 2 3发布了小型 NFC 支持 仅限于 NXP 标签读取 后来 Google 增强了 API 所以在OS 2 3 3支持更广泛的标签 并且还可以使用 p2p 我的问题是
  • 将侦听器添加到各个 ListPreference 项

    我正在尝试将单个侦听器添加到ListPreference但我只是找不到正确的代码来做到这一点 例如 假设我有一个应用程序需要region要设置 所以我有一个ListPreference有三个选项 美洲 亚洲 欧洲 当我使用触控板滚动浏览项目
  • 在 Android Studio 中使用预构建的共享库

    我需要在我的 android 项目中使用自定义的预构建共享库 在独立 ndk 上构建为 libdynamic so 我在路径 src main 中创建了一个文件夹 jniLibs 然后在其中创建了 4 个文件夹 即 armeabi arme
  • 如何避免内存不足异常

    在我的应用程序中 我使用图像的 url 从网络下载图像 我有很多图像 因此我为此实现了分页技术 并按垂直顺序为每页显示 15 个图像 在这种情况下 我向上 向下滚动页面以查看图像 此时我的应用程序崩溃了 并且出现了内存不足异常 请任何人帮助
  • 如何在Android上获取角度中的按键事件?

    我们如何在 Android 上的 Angular 中获取按键事件及其值 我使用phonegap Cordova Angular JS
  • 迭代 Sqlite-query 中的行

    我有一个表布局 我想用数据库查询的结果填充它 我使用全选 查询返回四行数据 我使用此代码来填充表行内的 TextView Cursor c null c dh getAlternative2 startManagingCursor c th
  • 温度转换 2 字节

    我很难转换两个字节的温度 我有一个控制单元 温度传感器 我可以在其中获取两个字节的温度消息 1 示例 message 40 25 LSBYTE 40 MSBYTE 25 0 03125 C bit temperature 25C seen
  • 带有可点击区域的 Android 图像

    我需要建议如何在 Android 下实现以下功能 我需要一个表示类似于图形 来自离散数学 的图像 具有顶点和边缘 我可以在其中单击每个顶点或边缘并触发不同的操作 请告诉我如何实现这一目标 也许与imagebuttons 或另一种表示此功能的
  • Android Studio 1.0 在 dexDebug 或 dexRelease 上构建失败

    我最近从 Android Studio 0 9 2 升级到 1 0 包括 Gradle 插件版本 1 0 0 并且在构建项目时遇到问题 每当我构建时 我都会在 dexDebug 或 dexRelease 步骤中收到以下异常 UNEXPECT
  • 超慢的表格布局性能

    我遇到了糟糕的 TableLayout 性能 我在这里读过一些帖子 谈论同样的事情 Android 动态创建表 性能不佳 https stackoverflow com questions 9813427 android dynamical
  • 如何从 SD 卡中删除文件

    我正在创建一个文件作为电子邮件的附件发送 现在我想在发送电子邮件后删除图像 有没有办法删除文件 我努力了myFile delete 但它没有删除该文件 我在 Android 上使用此代码 因此编程语言是 Java 使用通常的 Android
  • SWIG C 函数指针和 JAVA

    我有一些 C 代码 其中一个方法有一个函数指针作为参数 我正在尝试在我的 Android 应用程序中使用 C 代码 我决定使用 SWIG 来完成生成我需要的 java 文件的所有工作 一切都适用于常规函数 没有函数指针作为参数的函数 但我不
  • Android JobScheduler 每天只运行一次

    我检查了 JobScheduler API 它可以从 Android API 级别 21 开始使用 我想安排一个需要互联网并且每天仅运行一次或可选每周运行一次的任务 如果成功执行 我没有找到关于这种情况的例子 有人能帮我吗 谢谢 针对您的问
  • 如何在 Android 上设置 Google Drive API?

    我一直在尝试将 Google Drive 功能集成到我的应用程序中 但我无法使用任何内置功能 因此我相信我要么错过了一个步骤 要么做得不正确 我正在遵循官方的 Google 开发者指南 https developers google com
  • 如何在给定的纬度和经度处使用标记/覆盖项目启动地图意图?

    我有一个纬度和经度 我想打开以该点为中心的谷歌地图 所以我使用以下代码 Intent intent new Intent android content Intent ACTION VIEW Uri parse geo lat lng st
  • 无法查询 ContentResolver 以从 my_downloads 获取下载文件的名称,但在 all_downloads 中工作正常

    我的应用程序设置为激活一次具有扩展名的文件 myappdata被打开 它通过这个意图过滤器来实现这一点
  • 智能手机可以通过 3G/4G 进行点对点通信吗?

    我正在尝试编写一个应用程序 将数据从一个 Android 设备传输到另一个 Android 设备 但这些设备很可能位于城市 州或国家的不同部分 直接的方法是拥有一台中央服务器 或任何类型的服务器 但我试图避免使用中央服务器 我试图传递的数据

随机推荐

  • 为复选框数组放置错误消息

    我正在使用 jQuery 的验证插件 它的效果非常好 除非我有一组复选框 错误消息将在第一个复选框之后显示 就像这样 tbody tbody
  • 在docker容器中运行djangoworker和daphne

    我有在 docker 容器中运行的 django 应用程序 最近我发现我需要向我的应用程序添加 websockets 接口 我在 nginx 和 redis 后面使用带有 daphne 的通道作为缓存 问题是我必须在 1 个容器中运行 dj
  • 转移可变借用的所有权

    我的理解是 可变借款人可以将所有权转移给另一个可变借款人 但这个移动似乎与移动非指针变量有点不同 让我们看一个例子 以下p1被转移到p2 when compute 被称为第一次 但所有权似乎又回到了p1 after compute 返回 f
  • 覆盖目标 Android Makefile 的命令

    我正在尝试使用 g 编译我的 Android ndk 项目中的模块之一 尽管源代码都是 C 语言 make 系统警告刺激了我的眼睛 C NVPACK android ndk r8d build core build binary mk 34
  • Flexbox 列自身与底部对齐

    我正在尝试使用 Flexbox http css tricks com almanac properties a align content http css tricks com almanac properties a align co
  • 替换许多字符串的更好方法 - C# 中的混淆

    我试图混淆大量数据 我创建了一个要替换的单词 标记 列表 并且使用 StringBuilder 类逐个替换单词 如下所示 var sb new StringBuilder one MB string foreach var token in
  • 如果我们将内存标记为WC(Write Combined),那么我们是否自动具有一致性?

    众所周知 在 x86 架构上自动提供获取 释放一致性 即所有操作自动排序 没有任何围栏 不包括第一个存储和下一个加载操作 正如 Herb Sutter 在第 34 页所说 如果我们把MFENCE LFENCE SFENCE 在它们之间 则存
  • Unity3d:如何检测区域内的点击

    在 Unity3d 应用程序中 我尝试检测当前相机的某个方形区域中的单击 有什么办法可以做到这一点吗 谢谢 这不是您要找的吗 http unity3d com support documentation ScriptReference In
  • 参数 1 具有意外类型“Ui_mainWindow”

    我正在尝试为我在这里的一些人的帮助下编写的一个小程序制作一个 GUI 无论如何 我在 PyQt 中制作了 GUI 它看起来不错 我添加了一个名为 dirButton 的按钮 上面写着 选择目录 self dirButton QtGui QP
  • 在同一个 DOM 元素上使用 ng-show 和 ng-hide 是否正确?

    我想知道在同一个 DOM 元素上使用 ng show 和 ng hide 是否是一个好习惯 这似乎是一个更好的主意 而不是在一个 ng show 中使用多个条件 其中一些条件是否定的 让我知道 谢谢 PS 这里有一个例子 div Mary
  • jQuery 验证器所需的最少字数

    我正在寻找一种使用 jQuery 验证某些输入文本区域的方法 不幸的是 尽管 jQuery 验证器插件很棒 但它缺乏验证 据我所知 最少所需单词 我没有携带代码 我将在早上编辑 但我编写了一个函数来计算输入中的单词数 但这并不像插件提供的那
  • Django 1.9.2 AssertionError:数据库连接未设置为 UTC

    我现在已经使用 PostgreSQL 设置了 3 个服务器 但到目前为止还没有看到这个问题 我现在正在设置第一台不在丹麦服务器上运行的服务器 并且在从网络访问数据库时开始出现错误 我可以毫无问题地使用 createsuperuser 并且它
  • 如何为数组分配排名号

    我有一个数字数组 例如 myarray 45 3 56 7 21 我需要做的是将这些值排列到另一个数组中 因此对于上述内容 我最终会得到 myarray2 4 1 5 2 3 非常感谢 Adam 好了 完整的解决方案
  • 如何将 Delphi XE 包和设置移至其他用户?

    我们已经建立了一个新的 模板 开发机器 其中包括 Delphi XE 其中包括大量第三方和内部软件包 并打算为我们团队中的开发人员制作该计算机的多个克隆 请注意 我们并不是试图绕过许可 我们在克隆后 重新 激活 注册 Windows Off
  • Mac OS下安装pygresql时出现clang错误

    我试图在 Mac OS X 10 11 3 下安装 PyGreSQL 但从 pip 和源安装时会出现相同的 clang 错误 python3 setup py install running install running bdist eg
  • 如何将所有以前的提交合并到一个提交中?

    Context 在 GitHub 上启动项目并一直在尝试 git 命令 该项目的历史是混乱的 问题 如何删除所有历史记录并将所有提交消息替换为 已上传项目源的初始版本 之类的内容 此选项将允许您保留项目的所有配置文件 git reset s
  • DataTable Linq 连接许多列

    我在使用 Linq Join 时遇到问题 我想连接 2 个表 它们具有相同的 n 列结构 我的问题是我不知道这些列的名称 那么我如何在 select new 中重写这些列 表 1 这里我有一些 ID Name 和 LastName 参数 注
  • MySql 错误:1364 字段“display_name”没有默认值

    我刚刚从 MAMP 安装切换到本机 Apache MySql 和 PHP 安装 我已经一切正常 但我已经开始在新环境中使用我的网络应用程序 突然任何 INSERT 命令都会导致以下错误 SQLSTATE HY000 一般错误 1364 字段
  • 为什么 nasm 找不到 cmake 中的 include 语句

    我正在使用一个模块化引导加载程序 我觉得设置它使用 Gas 比将 nasm 移植到 cmake 更痛苦 似乎并非如此 NAsm 无法找到包含文件 我缺少什么 完整的代码可以在这个 Github 存储库 https github com Co
  • 为什么 Google 智能锁对话框只有“从不”和“保存”两个选项,而没有“否”?

    Smart Lock 弹出对话框只有两个按钮 一个是 从不 另一个是 保存密码 如果用户不小心点击了 从不 SmartLock就会被禁用 直到他使用chrome应用程序删除 从未保存过的密码 项 这对于 懒惰用户 来说步骤太多了 而且很有可