CN112074813A - 捕获并处理与原生应用的用户界面的交互 - Google Patents

捕获并处理与原生应用的用户界面的交互 Download PDF

Info

Publication number
CN112074813A
CN112074813A CN201980027540.XA CN201980027540A CN112074813A CN 112074813 A CN112074813 A CN 112074813A CN 201980027540 A CN201980027540 A CN 201980027540A CN 112074813 A CN112074813 A CN 112074813A
Authority
CN
China
Prior art keywords
presentation
data
user
user interface
frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201980027540.XA
Other languages
English (en)
Inventor
马修·马斯特拉奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Complete Story Ltd
FullStory Inc
Original Assignee
Complete Story Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Complete Story Ltd filed Critical Complete Story Ltd
Publication of CN112074813A publication Critical patent/CN112074813A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

公开了包括在计算机存储介质上编码的计算机程序的用于评估与应用的用户界面的交互的方法、***和装置。在一个方面中,一种方法包括接收用于与原生应用的用户会话的帧丛束。每个帧丛束可以包括针对一个或多个时间点中的每个指定由原生应用用来在该时间点处生成原生应用的用户界面的每个呈现对象的呈现位置、以及针对一个或多个呈现对象指定被执行以生成呈现对象的视觉表示的一个或多个绘制操作的数据。基于由帧丛束指定的数据来生成回放数据,所述回放数据呈现与被执行以生成每个呈现对象的视觉表示的绘制操作相对应的用户界面的视觉变化。

Description

捕获并处理与原生应用的用户界面的交互
背景技术
本说明书涉及数据处理以及捕获/评估与原生应用的用户界面的交互。
用户界面促进与各种资源和应用的用户交互。例如,用户界面通常包括各种交互式要素,其使得用户能够输入数据(例如,使用文本框)、作出数据选择(例如,使用单选按钮、复选框或下拉菜单)、导航至应用页面(例如,通过与嵌入式链接交互)、以及改变用户界面的视觉方面(例如,旋转设备、重新设置窗口大小、滚动至应用页面的其它部分、或者使用缩放控制)。用户对于给定应用的满意度可以取决于与该应用的用户界面交互的的用户体验。
发明内容
总体上,本说明书中所描述主题的一个创新方面可以以方法来体现,所述方法包括接收用于与原生应用的用户会话的帧丛束(frame bundle)。每个帧丛束可以包括数据,该数据针对一个或多个时间点中的每个指定由原生应用用来在该时间点处生成该原生应用的用户界面的每个呈现对象的呈现位置。每个呈现对象可以是在用户界面的一部分内生成其自身的视觉表示的对象。每个帧丛束还可以针对一个或多个呈现对象包括被执行以生成呈现对象的视觉表示的一个或多个绘制操作的数据。可以基于由帧丛束所指定的数据来生成回放数据,所述回放数据呈现与被执行以生成每个呈现对象的视觉表示的绘制操作相对应的用户界面的视觉变化。该方面的其它实施例包括相应的***、装置、以及在计算机存储设备上编码的被配置为执行该方法的动作的计算机程序。
可选地,这些和其它实施例均可以包括以下一个或多个特征。在一些方面中,每个呈现对象可以包括视图(view)或图层(layer)中的一个,并且每个帧丛束可以包括指定每个视图或图层的层级表示(hierarchical representation)的数据。生成回放数据可以包括基于用来生成呈现对象的绘制操作来重建每个呈现对象的视觉表示。
在一些方面中,原生应用的工具代码可以生成每个帧丛束,包括使得每个呈现对象的每个图层将其自身绘制到离屏绘制上下文(offscreen drawing context)并且存储指定被执行以在该离屏绘制上下文中绘制每个呈现对象的每个图层的绘制操作的数据。该绘制上下文可以是基于便携式文档格式(PDF)的绘制上下文,并且指定每个绘制操作的数据被存储在PDF文档中。
针对每个给定呈现对象,工具代码可以使得原生应用在其上运行的操作***的绘制库在视图被绘制到该离屏绘制上下文之前向该离屏绘制上下文绘制用于该呈现对象的起始标记,以及在该呈现对象已经被绘制到该离屏绘制上下文之后绘制用于该呈现对象的结束标记。工具代码可以将在起始标记和结束标记之间的离屏绘制上下文的每个绘制操作指配给给定呈现对象。
在一些方面中,每个帧丛束可以包括指定在一个或多个呈现对象的呈现期间发生的一个或多个用户界面事件的数据。生成回放数据可以包括在一个或多个呈现对象的呈现期间重建一个或多个用户界面事件。
本说明书中所描述主题的特定实施例可以被实施从而实现以下一种或多种优势。与原生应用的用户交互可以被远程捕获和评估而不对用户体验造成负面影响。用户界面的评估可以被用来修改用户界面从而提供更好的用户体验。与用户界面的用户交互的评估可以揭示出用户在与用户界面交互时存在的困难,并且应用开发者可以回放每个感兴趣会话以评估可以如何修改用户界面以降低用户在与用户界面交互时存在的困难。顾客服务代表可以通过回放用户查询主题的用户会话来快速解决有关用户界面的用户查询。例如,该代表可以在与用户交互的同时(例如,在支持呼叫或在线聊天期间)实时地回放用户会话以便讨论该用户会话。应用开发者可以通过汇总从多个用户会话获取到的信息而被提供有关与各种用户界面要素的用户交互的范围和/或各种条件(例如,失败的内容加载或被中止的用户会话)的范围的信息。
可以使用web界面(例如,web浏览器或WebView)来回放在多个不同平台(例如,AndroidTM、iOSTM或者另一种操作***)上发生的用户会话。在不同和不兼容平台上发生的用户会话可以在例如相同web界面的相同回放中被统一,这允许共同的用户界面来观看原本并不兼容的数据,并且使得共同的用户界面能够跨在不同操作***(OS)环境中发生的用户会话进行回放和/或搜索。通过基于用户会话在其上发生的平台来对用户会话进行索引,用户能够识别出在其中发生或并未发生特定用户动作、用户无动作和/或错误的用户会话,这进一步辅助用户对用户界面进行评估。
此外,通过基于在用户会话期间发生的事件来对用户会话进行索引,应用开发者能够搜索其中发生某些事件的用户会话。用户会话因此能够快速前进至该事件发生的时间,从而允许对用户会话进行更快且更有效的评估。
本文所描述的技术可以使用与没有这些技术的情况下所要求的相比更小的带宽和/或更少的存储器资源来促进与用户界面的用户交互的评估。例如,通过存储和传送指定用来生成用户界面的视图的结构和布局以及用来生成该视图的绘制操作的数据而不是存储显示自身的截屏或视频,更小的带宽以及更少的存储器资源被使用。
一种或多种压缩或预压缩技术可以进一步减少被用来促进用户交互的评估的带宽和存储器资源的量。例如,诸如视图树或显示图层树的呈现层级的数据可以基于指定时间时段定期被编码并存储在帧丛束中。如果与之前存储的帧丛束的先前呈现层级相比,仅呈现层级的一部分有所变化,则可以仅将变化的部分存储并传送至生成回放数据的服务器,这减少了所存储和传送的数据的量。此外,如果在给定时间时段内尚未在应用的用户界面检测到用户交互(或者检测到少于阈值数量的用户交互),则利用其对呈现层级编码并存储的时段可以被增加,以在该应用的用户活动较少时减少被编码、存储和传送的数据的量。
在正常情况下由应用从客户端设备进行加载的图像(例如,在每次打开应用时),以及基于应用的内容从网络(例如,互联网)下载的图像可以被识别。客户端设备可以例如在应用在客户端设备处被首次初始化时将图像发送至服务器,而不是该图像每次在用户界面上呈现时进行发送。对于在用户界面上的图像的后续呈现,图像的唯一标识符可以替代图像自身被发送至服务器。通过将由应用正常加载的图像存储在生成回放数据的服务器处(或者以其它方式不将图像从用户设备传送至另一个设备),可以通过仅传送从网络下载的图像而减少提供用于回放的图像时的带宽。
本说明书中所描述主题的一个或多个实施例的细节在附图和以下描述中给出。主题的其它特征、方面和优势将由于该描述、附图和权利要求而变得清楚明白。
附图说明
图1是用户在其中与用户界面进行交互的示例环境的框图。
图2是用于重放会话的示例用户界面的图示。
图3是用于捕获、编码和传送描述由原生应用所呈现的用户界面的数据的示例过程的流程图。
图4是用于生成并且输出回放数据的示例过程的流程图。
同样的附图标记和指定在各图中指示同样的要素。
具体实施方式
应用开发者通常想要创建具有用户友好的用户界面的应用,而使得用户将具有积极的体验。拥有有关与给定用户界面(例如,应用界面)的用户交互的信息可以帮助发行者识别出用户界面中可以有所改变以改善用户体验的方面。本文讨论获得与应用(例如,安装在移动或平板设备上的原生应用)的用户界面中所呈现的内容以及与该应用的用户界面的用户交互相关的信息,并且处理该信息以便为应用开发者提供数据,应用开发者可以使用所述数据来识别出用户界面中可以被修改以对与该用户界面的积极用户体验作出贡献的方面。如下文详细讨论的,被提供给应用开发者的数据可以包括描述与用户界面的用户交互的会话活动数据和/或呈现给定用户会话期间针对用户界面的视觉变化的回放数据。
用于给定应用的回放数据可以包括示出鼠标移动、鼠标悬停、点击和与用户界面的其它用户交互,以及在用户在与应用交互和/或观看该应用的同时发生的针对用户界面的变化(例如,被加载和/或从用户界面移除的内容)的数据。如果用户在应用的用户界面之间导航,则该回放数据还可以包括例如以各个用户界面被用户观看的顺序示出各个用户界面的数据。类似地,关于触摸屏设备,该回放数据可以包括示出(例如,使用手指或者诸如手写笔或笔之类的指示器)所执行的滑动、敲击或其它手势的数据。
会话活动数据可以包括详述用户在与应用交互和/或观看该应用的同时与各种用户界面要素的各种用户交互的活动列表。该会话活动数据还可以包括活动报告,其可以为应用开发者提供执行了指定交互(例如,在指定按钮上执行点击)的用户的汇总测量(例如,总数或部分)、未能执行指定交互(例如,未在“继续”按钮上执行点击)的用户的汇总测量和/或执行了各种交互组合且未能执行各种用户交互组合的用户的汇总测量。
如下文所讨论的,应用开发者被提供使得该应用开发者能够请求会话信息(例如,会话活动数据和回放数据)并且回放满足该请求中所指定标准的用户会话的界面。因此,应用开发者被提供有关有多少(或者哪些部分的)用户执行了(或未执行)一个或多个指定交互、有多少用户会话包括指定事件的信息和/或观看那些用户会话的回放。
在随后的描述中,提供iOSTM环境中的实施方式的细节作为示例。iOSTM是苹果公司所创建并开发的移动操作***。本文所描述的技术也可以在其它环境中实施,包括其它移动和非移动环境。
图1是用户在其中与用户界面进行交互的示例环境100的框图。示例环境100包括网络102,诸如局域网(LAN)、广域网(WAN)、互联网、移动网络或者它们的组合。网络102连接用户设备106、应用开发者108和评估装置150。示例环境100可以包括许多不同的用户设备106和应用开发者108。
用户设备106是能够通过网络102请求并接收资源的电子设备。示例用户设备106包括个人计算机、移动通信设备以及能够通过网络102发送和接收数据的其它设备。用户设备106通常包括用户应用,诸如web浏览器,以促进数据通过网络102的发送和接收。用户设备106还可以包括其它应用107,诸如在移动设备上运行的移动应用。移动应用可以包括针对特定平台或特定设备开发的原生应用,例如,针对iOSTM开发的应用。
应用107可以通过网络102向开发了应用107的应用开发者108提交内容请求112。例如,当用户打开应用107时,应用107可以请求图像、文本、视频、图形或其它要由该应用的用户界面呈现的内容。应用开发者108可以具有一个或多个内容服务器109,其响应于内容请求而从一个或多个内容存储110(例如,存储器存储设备,诸如硬盘、闪存等)提供应用内容114。应用107也可以将内容存储在用户设备106处。例如,在应用107每次(或多次)被打开时通常被呈现的文本、(例如,图标或标志的)图像以及其它类型的内容可以被存储在应用107被安装并执行的用户设备106处。该内容可以被临时存储或者只要该应用被安装在用户设备106处就被存储。
应用107可以包括工具模块121(例如,工具代码),其收集、存储和传送表示由应用107的用户界面所呈现的内容以及与该用户界面的用户交互的数据。在应用107运行的同时,工具模块121可以收集数据并且将该数据存储在用户设备106处。工具模块121可以压缩数据(例如,通过对数据编码),并且例如定期地或者基于所收集和/或压缩的数据量而将数据提供至评估装置150。
在一些实施方式中,工具模块121是应用107的插件,其在应用107启动时(或之前)启动。特别地,工具模块121可以是第三方(例如,不同于开发并提供应用的实体)所提供并且在应用107在用户设备106上运行的同时收集表示用户界面处所呈现内容的数据的单独应用。在一些实施方式中,工具模块121包括在应用107每次启动时启动的库。
例如,如果应用107是在iOSTM上运行的应用,则工具模块121可以包括在应用107每次在用户设备106处被初始化时启动的iOSTM库。开发者可以将该库添加至应用107,并且将针对该库的引用添加至该应用的信息属性文件(例如,iOSTM中的应用的属性列表(plist)),并且工具模块121可以在每次应用107被启动时启动。
工具模块121包括视图扫描器123、事件检测器126、帧编码器127和上传器128。视图扫描器123获得有关由应用的用户界面在用户会话期间所呈现的内容(例如,颜色、图像、文本、视频、声音、菜单、工具栏等)的数据,并且存储该数据使得该数据可以被用于回放该用户会话、针对具有该用户界面的用户会话计算汇总统计和/或其它适当的分析或诊断用途。
视图扫描器123包括窗口扫描器124和便携式文档格式(PDF)扫描器125,它们均可以是工具模块121的组件或者是单独的插件或应用。窗口扫描器124可以获得指定应用的用户界面的结构和布局的数据。在一些实施方式中,窗口扫描器124可以定期获得该数据(例如,每秒钟多次)使得该数据可以被用来回放用户会话。数据可以包括指定窗口和窗口视图的布局(例如,屏幕上每个窗口和视图的位置)以及窗口和视图的属性(例如,用来生成视图的一个或多个类以及诸如尺寸、文本的类型或字体、元数据等的(一个或多个)类的(一个或多个)属性)的数据。
在iOSTM中,视图是在用户界面的一部分内(例如,用户界面的窗口内)生成其自身的视觉表示的对象。每个窗口可以包括一个或多个视图。每个视图可以包括窗口的几何形状的区域(例如,矩形),在其中视图生成视觉表示。视图可以使用一个或多个绘制操作在用户界面上生成其自身的视觉表示,所述绘制操作向该用户界面绘制文本、图像、视频或其它内容。
在一些实施方式中,针对每个窗口,窗口扫描器124获得一个或多个呈现层级130,所述呈现层级130每个指定用来生成用户界面的窗口的呈现对象(例如,视图和/或图层)的层级。如本文所使用的,呈现对象是加载(例如,绘制内容)和/或可选地检测用户交互事件(例如,对象内的鼠标点击或触摸事件)的原生应用的对象。iOSTM中的示例呈现对象包括视图和图层。
针对每个窗口,窗口扫描器124可以获得指定呈现对象的层级的数据。例如,针对每个窗口,窗口扫描器124可以获得指定视图的层级的数据(例如,视图树)和/或指定图层的层级的数据(例如,显示图层树)。窗口或视图可以包括以类似树的层级排列的子视图,其中该窗口是树的根。例如,视图可以包括具有文本的子视图以及包括图像的另一个子视图。每个视图也可以与以层级排列的一个或多个图层相关联。在用于在iOSTM上运行的原生应用的一些实施方式中,窗口扫描器124可以从UIView类获得指定视图的结构和布局的数据。窗口扫描器124可以在临时跨平台缓冲器或库(例如,FlatBuffer)中存储用于视图的数据(例如,视图树)和/或用于图层的数据(例如,显示图层树)。FlatBuffer的使用可以减少存储数据所需的存储器的量并且提高数据被存储和检索的速度。
窗口扫描器124可以使用呈现层级来识别被用来生成使用绘制操作的呈现对象的绘制操作。在一些实施方式中,窗口扫描器124使得每个呈现对象(例如,视图和/或每个图层)将其自身绘制到离屏绘制上下文、离屏缓冲器或者其它离屏位置。在iOSTM的一些版本中,绘制操作通常在被称作上下文的核心图形(Core Graphics)中的类似PDF的对象中执行。上下文表示绘制目的地并且包含绘制***执行任何后续绘制命令所需要的信息。每个呈现对象可以将其自身绘制到在用户设备106的显示器上呈现的屏上上下文(onscreencontext)。
窗口扫描器124可以使得每个呈现对象还将其自身绘制到并不在用户设备106的显示器上呈现的PDF图形上下文。PDF图形上下文是由iOSTM支持的上下文。窗口扫描器124可以通过向视图提交将其自身绘制到PDF图形上下文的请求来使得视图或图层将其自身绘制到PDF图形上下文。在视图和/或图层将其自身绘制到PDF图形上下文时,生成包括用于用来绘制呈现对象的每个绘制操作的数据的PDF文档。例如,当特定视图或图层将其自身绘制到PDF图形上下文时,iOSTM的核心图形PDF引擎将用于特定视图或图层的绘制操作转译为PDF命令。该PDF引擎可以将转译的PDF命令存储在PDF文档中。
在窗口扫描器124每次经呈现层级迭代时,窗口扫描器124可以创建新的PDF文档。例如,窗口扫描器124可以基于指定的时间周期(例如,每200毫秒、每300毫秒或者另一种适当的时间周期)定期获得用户界面的结构和布局(例如,视图树和/或显示图层树)。每个周期的视图树和/或图层树表示用户界面在给定时间点处的帧(或快照)。出于本文的目的,帧表示用户界面在给定时间点处的状态。例如,用户界面可以在用户与应用交互时发生变化,并且每一帧可以表示用户界面在相应的给定时间点处的状态。
窗口扫描器124可以迭代用户界面的每个窗口,并且针对每个窗口迭代该窗口的呈现层级,并且针对每个所获得的用户界面结构生成PDF文档。以这种方式,针对用户界面的每一帧,窗口扫描器124可以生成表示用户会话期间的帧(但是并不存储用户界面的截屏)的PDF文档。存储和压缩用于绘制操作的数据而不是实际截屏的位图或像素数据可以显著地减少用来存储数据的存储器的量以及用来将数据从用户设备106传送至评估装置150的带宽的量。
针对帧的PDF文档可以包括用来生成由该帧所表示的给定时间点处的用户界面的绘制命令的列表。在一些实施方式中,窗口扫描器124可以在每个对象的绘制命令的开头和结尾处使用标记来标记出PDF文档中的呈现对象(例如,视图和/或图层)之间的边界。例如,在特定呈现对象将其自身绘制到PDF图形上下文之前,窗口扫描器124可以向PDF文档写入唯一标记,其以信号表示用于该特定呈现对象的绘制命令的开始。类似地,在用于该特定呈现对象的最后绘制命令被记录在PDF文档中之后,窗口扫描器124可以向该PDF文档写入唯一标记,其以信号表示用于该特定呈现对象的绘制命令的结束。
在一些实施方式中,窗口扫描器124使得PDF引擎(例如,iOS的核心图形PDF引擎)绘制起始标记和结束标记(例如,具有起始或结束标签的唯一文本字符串)以标记PDF文档中的每个呈现对象的边界。例如,在特定呈现对象将其自身绘制到PDF图形上下文之前,窗口扫描器124可以使得PDF引擎向PDF文档绘制起始标记,其以信号表示用于该特定呈现对象的绘制命令的起始。示例起始标记可以是“BEGIN5CBF24A9-CEAE-460E-B4A6-C9A597A72442”。标签“BEGIN”指示用于特定呈现对象的绘制操作的起始,而其余则是针对该特定呈现对象的唯一文本字符串。该唯一文本字符串可以包括用于该特定呈现对象的唯一标识符,例如,通用唯一标识符(UUID)。类似地,在用于该特定呈现对象的最后绘制命令被记录在PDF文档中之后,窗口扫描器124可以使得PDF引擎向该PDF文档绘制结束标记,其以信号表示用于该特定呈现对象的绘制命令的起始。示例起始标记可以是“END5CBF24A9-CEAE-460E-B4A6-C9A597A72442”。标签“END”指示用于特定呈现对象的绘制操作的起始,而其余内容则是针对该特定呈现对象的唯一文本字符串。该唯一文本字符串也可以包括与起始标记相同的用于特定呈现对象的唯一标识符。为了绘制该文本字符串,窗口扫描器124可以使得PDF引擎绘制一个矩形(或者其它标准绘制命令)并且将该唯一字符串包括在该矩形中。虽然使用“BEGIN”和“END”作为标签,但是也可以使用其它标签。
在一些实施方式中,窗口扫描器124为每个视图创建新的PDF页面。例如,不同于使用如上文描述的开始和结束标记,窗口扫描器124可以使得核心图形PDF引擎开始新的PDF页面以标记PDF文档中的每个呈现对象的边界。在该示例中,用于帧的PDF文档可以包括用于该帧中的每个呈现对象的页面。
在一些实施方式中,窗口扫描器124还可以识别并丢弃被剪切的呈现对象,例如无法观看或者被其它视图或图层遮挡的视图或图层。例如,应用107在给定时间处可以具有多个屏上分层的视图。在一些情况下,视图树的大部分完全被该视图树的其它部分所遮挡。窗口扫描器124可以基于窗口中的呈现对象的大小、位置和层级来识别被完全遮挡的呈现对象。例如,如果两个呈现对象在显示器上重叠并且基于层级一个处于另一个的前面,则后面的一个将至少部分被遮挡。窗口扫描器124可以排除被完全遮挡的呈现对象的数据,因为那些呈现对象并未在用户设备的显示器处被呈现并且并不被要求用于准确回放。如果呈现对象被部分遮挡,则窗口扫描器124可以包括用于该呈现对象或者用于能够观看的部分的数据。这种被遮挡内容的排除减少了所存储数据的量以及被传送至评估装置150的数据的量,这就减少了所消耗的网络带宽以及用户设备106和评估装置150的存储器资源的量。
PDF扫描器125可以分析所生成的PDF文档并且识别用于每个呈现对象(例如,用于每个视图或图层)的相应的绘制操作。例如,PDF扫描器125可以使用PDF文档中的标记来确定哪些绘制操作对应于每个呈现对象。针对每个呈现对象,PDF扫描器125可以在PDF文档中识别用于该呈现对象的开始标记和结束标记。PDF扫描器125可以将PDF文档中处于该开始标记和结束标记之间的每个绘制操作指配给该呈现对象,并且例如在FlatBuffer中存储将每个绘制操作映射至其相对应的呈现对象的数据。
在一些实施方式中,PDF扫描器125将具体化的绘制操作发送回窗口扫描器124,使得窗口扫描器124可以将该具体化的绘制操作转换为压缩格式,例如压缩二进制格式,并且将该绘制操作与FlatBuffer树中的适当呈现对象相关联。针对每个帧,窗口扫描器124将指定窗口和呈现对象的结构和布局的数据以及为每个呈现对象指定绘制操作的数据提供至帧编码器127。如下文所描述的,帧编码器127可以将其它事件与每个帧相关联并且在数据被发送至评估装置150之前压缩用于帧的数据。
窗口扫描器124可以向每个帧指配唯一标识符和/或时间戳信息(或者顺序排序信息)。时间戳信息可以表示由帧所表示的用户界面在用户设备106的显示器处呈现的实际时间。顺序排序信息可以表示相对于在用户会话期间呈现的其它帧,该帧在何时被呈现。帧中所呈现的每个呈现对象和/或在帧中检测到的每个事件也可以被窗口扫描器124指配唯一标识符和/或相应的时间戳或顺序排序信息,使得每个帧的呈现对象和事件可以在回放期间以正确顺序被呈现。
在一些实施方式中,PDF扫描器125使用字形映射技术来确定PDF文档中的由绘制操作所呈现的文本。例如,示出针对PDF的操作的文本可以使用并不表示确切Unicode(统一字符编码标准)字符的占位符字符。为了检索到被绘制到PDF文档的实际Unicode字符,PDF扫描器125可以解析利用子集化字体被存储在PDF文档中的嵌入式字符图(例如,CMap)。该字符图可以采用PDF和CMap规范所指定的各种形式。PDF扫描器125可以将用于每个文本绘制操作的数据提供至窗口扫描器124以便与在其中绘制文本的呈现对象进行关联。
PDF扫描器125还可以使用宽度映射技术来确定PDF文档中的绘制操作所呈现的文本字体的实际印出宽度。PDF扫描器125可以解析来自PDF文档中的嵌入式字体的字符宽度列表以确定实际印出宽度。在一些情况下,示出用于PDF的操作的文本并不显式地使用空格。相反地,空格是通过在字符之间使用异常大的字符间间隙而被创建。工具模块121可以在开启时(例如,在应用107启动时)向测试PDF写入字体,以测量该字符间间隙并且将其缓存以供PDF扫描器125未来用作空间检测阈值。
在一些实施方式中,PDF扫描器125还可以利用文本的无法理解的版本来替代屏上绘制的文本,例如使用文本的有损散列函数或加密版本。例如,不同于存储屏上呈现的实际文本,PDF扫描器可以对文本应用散列函数或者事先将该文本加密,并且存储所得到的散列值或加密文本而不是实际文本。以这种方式,如果文本包括私密或敏感信息,则该文本不会在回放期间被呈现。在一些实施方式中,工具模块121可以被置于私密模式,其中PDF扫描器125利用文本的无法理解的版本来替代屏上绘制的文本。在回放的时候,所存储的文本的无法理解的版本被用来显示用于该文本的占位符。例如,在回放期间,可以在与用户会话期间实际呈现的被替代文本相同的位置处显示黑色框、圆角矩形、点或者指示那里的文本被替代的另一种视觉表示。
在PDF扫描器125分析PDF文档并且将适当数据提供至窗口扫描器124之后,PDF扫描器125可以删除用于该帧的PDF文档。这减少了在可能具有有限数据存储资源的用户设备106处存储的数据的量。
在一些实施方式中,工具模块121可以使用方法混合(method swizzling)技术从资源级别跟踪图像起源(例如,图像可能从它们的原始形式被修剪或着色)、跟踪用户输入事件(例如,触摸、按钮点击等),并且实施针对web视图的工具代码。方法混合可以在Objective-CTM应用中使用并且涉及在运行时间将方法实施指针切换到架构或用户代码的调换或填隙片(shim)实施。通常,填隙片是可以拦截消息或调用(例如,API调用)并且自行处理该调用或者将调用重定向至别处的库。
工具模块121可以混合用于绘制图像、处理用户输入事件的方法的集合和/或其它适当方法。例如,工具模块121可以在应用107启动时访问所要混合的方法的列表。工具模块121可以确定应用107是否使用列表中的任何方法,并且如果是,则将匹配列表中的方法的应用107的方法进行混合。
混合可以被用来减少用于存储应用107所呈现的图像以及将该图像传送至评估装置150的存储器存储和带宽的量。混合可以减少可能被应用107多次呈现的图像被上传至评估装置150的次数。例如,图像可以被上传一次,例如,在应用首次在用户设备106上被初始化时。此后,该图像的占位符标识符可以被用来引用该图像,而不是每次绘制操作将该图像绘制到PDF图形上下文时都上传该图像。
在iOSTM中,图像在被加载以便在屏上绘制的途中可以经过多种不同的变换。针对每个变换操作(包括可能并非源自于资产的图像),窗口扫描器124可以从进入的图像读取旧的起源元数据并且将新的起源元数据添加至旧的起源数据。以这种方式,窗口扫描器124可以创建能够从图像读取的元数据链。起源数据可以指示图像的来源(例如,该图像的web地址)以及指定针对该图像所作出的任何调整(例如,修剪、着色等)的数据。
图像的起源元数据可以作为Objective-CTM关联对象被存储。给定指向UI图像或CGImage类的指针,工具模块121可以直接读取或写入元数据,并且确信元数据将会在未来存在。每个元数据块可以包含表示用来创建图像的方法调用的JavaScript对象表示法(JSON)对象。如果窗口扫描器124在扫描视图树时遇到了包含具有起源元数据的UIImage的UIImageView衍生视图,则窗口扫描器124可以提取该元数据并且利用用来绘制的绘制操作将该元数据连同用于该图像的占位符标识符一起进行存储。在回放的时候,这些JSON块可以被解析并且用来以适当方式绘制经变换的图像。
一些iOSTM应用利用具有简单风格的内建式UIView控件类。然而,针对这些应用存在以更加复杂、定制的方式写入渲染其自身的视图的选项。为了在从用户设备106向评估装置150上传数据时减少上传带宽,窗口扫描器124可以尝试在绘制其自身的用户界面层级中捕获视图的起源。工具模块121可以混合UIImage绘制方法(例如,drawAtPoint、drawInRect和drawAsPatternInRect)以检测绘制操作何时发生。如果这些方法之一在窗口扫描器124迭代视图树并且请求视图将其自身绘制到PDF绘制上下文的同时在具有起源元数据的图像上被调用,则窗口扫描器124可以利用占位符绘制调用来替代该图像绘制方法,所述占位符绘制调用可以在扫描PDF时被PDF扫描器125所检测以将绘制操作与视图相关联并且将该绘制操作包括在用于对应于该绘制操作的帧的PDF中。如果方法在窗口扫描器124迭代呈现层级(例如,视图树和/或显示图层树)的时间之外被调用,则工具模块121可以将该调用传递至原始方法而不采取任何动作。
一些iOSTM应用可以包括在该应用中嵌入web内容的web视图。例如,一些iOSTM应用使用诸如UIWebView或WKWebView类的web类型视图以在应用中嵌入web内容。工具模块121可以使用与工具模块121用来获得应用107自身的用户界面的数据不同的技术来捕获与在web视图中呈现的用户界面以及与在该web视图中呈现的用户界面的交互相关的数据。用于获得与在web视图中呈现的用户界面以及与在该web视图中呈现的用户界面的交互相关的数据的示例技术在2014年12月31日提交的题为“Evaluation of Interactions with aUser Interface(与用户界面交互的评估)”的美国专利申请No.14/587,481中有所描述。
例如,工具模块121可以基于从web视图收集的界面数据、用户交互数据和突变数据来从web视图捕获数据。界面数据指定会话期间在用户设备处呈现的用户界面的结构。当用户设备106渲染资源时,该界面数据可以是首次在用户设备处呈现的资源的初始文档对象模型(DOM)。例如,DOM可以指定该资源最初呈现的文本、图像以及链接列表,并且包括与这些要素中的每个相关的上下文数据(例如,每个要素的文本、每个要素的位置、每个要素的视觉特性等等)。DOM可以在该资源被用户设备106完全渲染时被提供至评估装置150。
除此之外或可替换地,DOM可以基于在资源被用户设备106渲染时提供至评估装置150的突变数据来被重构。例如,突变数据可以指定被用户设备所渲染的每个要素,并且该突变数据可以被提供至评估装置150(例如,被顺序地提供或者以用户设备在指定时间内所累积的突变数据集合提供)。使用突变数据,评估装置150可以以类似于浏览器所执行的方式重构DOM。突变数据例如可以通过在资源(或原生应用)的代码中***突变观察者脚本来获得。观察者脚本的突变可以针对资源结构的变化而监视资源,将表示变化的突变数据记录在用户设备处的本地存储器中,并且将突变数据提供到指定位置(例如,评估装置150)。
web视图的用户交互数据指定用户设备处关于该web视图的用户交互,并且包括与用户界面的要素的用户交互。用户交互数据可以指定鼠标移动、用户点击、鼠标悬停、高亮、文本输入以及在用户设备处执行的任何其它用户交互。例如,假设用户点击列表中的项目。在该示例中,用户交互数据将指定发生了用户点击并且识别出被点击的web视图的要素。用户交互数据还可以包括指定每个用户交互何时发生的时间戳信息和/或顺序编号信息,使得用户交互数据可以与其它数据进行协调。例如,用户交互数据可以指定给定用户交互发生的绝对时间和/或表示给定用户交互相对于用户交互集合中的其它用户交互何时发生的编号(例如,总共150个用户交互中的用户交互50)。
例如,可以通过在资源(或原生应用)的代码中***交互跟踪脚本来获得web视图的用户交互数据。交互跟踪脚本将监视鼠标移动、点击和其它用户动作。在平板或其它触摸板设备的环境中,交互跟踪脚本监视用户敲击、滑动、捏合以及与触摸屏设备的其它用户交互。
web视图的突变数据指定在用户会话期间发生的针对用户界面结构的变化。例如,假设用户点击列表中的项目,这导致第一图像被第二图像所替换。在该示例中,突变观察者脚本可以检测到web视图中第一图像的移除和第二图像的添加,以及指定第一图像从web视图移除并且第二图像被***到该web视图的在用户设备106处的突变数据。可替换地或除此之外,突变数据可以直接指定第一图像被第二图像所替换(例如,不同于指定移除突变和添加突变二者)。定期地,用户设备106可以将突变数据上传(或以其它方式传送)至评估装置150,所述评估装置150如下文更详细描述地处理突变数据。
在一些实施方式中,web视图的每个用户界面要素通过对应于用户设备渲染该用户界面要素的顺序的编号(或名称)来识别。例如,假设列表中被点击的项目是用户设备在加载资源时所渲染的50个要素中的最后一个。在该示例中,突变数据可以指定要素50从资源中移除并且要素51被***到该资源(例如,假设在要素50和要素51的渲染之间没有渲染其它要素)。突变数据还可以包括时间戳数据,其可以被用来将该突变数据与其它数据(例如,用户交互数据)进行关联。突变数据可以在web视图被呈现的同时贯穿用户会话的始终被持续被提供至评估装置150,使得评估装置所获得的突变数据表示在用户会话上针对web视图的所有变化。
在一些实施方式中,表示用户交互的顺序编号以及表示用户设备渲染用户界面要素的顺序编号是相同的编号次序。在这样的实施方式中,编号提供了针对用户界面以及与用户界面的用户交互的两种变化的相对顺序。例如,假设最后页面要素被渲染并且被给予编号x。进一步假设下一个事件是与用户界面的用户交互,其导致了DOM的后续变化。在该示例中,用户交互可以被指配以编号x+1(或者1以外的一些其它增量),并且对应于DOM中的变化的突变数据可以被指配以编号x+2。因此,该编号方案将指示在最后页面要素的渲染和DOM的变化之间发生用户交互。
工具模块121可以在web视图中呈现的资源(例如,web页面)中安装附加工具代码(例如,跟踪脚本)以捕获针对该web视图的用户界面数据。在一些实施方式中,工具模块121还在应用107中创建web视图时自动注入委托代理。例如,工具模块121可以将初始化web视图的某些方法(例如,initWithCoder或initWithFrame)混合并且在对象被返回之前在对象上设置委托。
委托是特殊类型的Objective-CTM对象,其实施特殊的转发方法(例如,methodSignatureForSelector、respondstoSelector和forwardInvocation)。如果要求委托对用户的委托或工具模块121想要处理的选择器作出响应,则该委托将首先透明地将委托方法送至工具模块121,随后送至用户的代码。以这种方式,委托可以跟踪web视图何时导航至不同的资源。
每次web视图导航至不同的资源,工具模块121都可以在不同资源中重新注入附加工具代码。为了这样做,委托可以基于委托所拦截并转发至web视图的方法来检测web视图何时导航至新资源。在检测到导航之后,工具模块121可以向不同资源中注入附加工具代码以跟踪用户界面事件并且收集有关web视图中的资源所呈现的用户界面的其它数据(例如,该资源的文档对象模型(DOM))。
用于web视图的附加工具代码可以生成指定用于web视图的捕获的用户界面数据的数据分组。委托可以拦截这些分组并且将它们发送至工具模块121。工具模块121随后可以将用于web视图的用户界面数据与在其中呈现web视图的适当帧(或者与帧的唯一标识符)一起存储。
在一些实施方式中,工具模块121可以使用方法混合来识别视图或图层中的现有绘制信息何时已经无效。工具模块121可以识别并混合视图无效方法来确定视图何时请求被重新绘制。例如,每个无效视图可以在每个绘制周期被重新绘制。如果视图尚未无效,则视图可能无需重新绘制。通过混合用于视图的无效方法,工具模块121可以确定哪些视图要在下一个绘制周期被重新绘制。窗口扫描器124可以使用该信息来针对其中视图显示信息尚未无效的视图跳过视图扫描,因为这指示该视图尚未发生变化。通过跳过未变化的视图,在网络102上编码并传送的数据的量减少。
事件检测器126可以使用手势和/或敲击辨识器类来检测在应用107的用户界面上发生的用户界面事件(例如,敲击、触摸、滑动等)。例如,事件检测器126可以使用UIGestureRecognizer和/或UITapGestureRecognizer类来检测用户界面事件的发生,例如通过将这些类混合。事件的数据可以与事件在其中发生的(一个或多个)帧一起存储。该数据可以包括事件自身、事件的发送者、事件的目标以及响应于事件而执行的动作。数据还可以包括时间戳信息,使得事件的数据可以例如在用户会话的回放期间与其它数据协调。数据还可以包括用于事件的选择器路径(例如,完整选择器路径)。选择器路径可以指定呈现层级中的每个呈现对象,所述呈现层级包括绘制事件在其上发生的对象的呈现对象。
为了获得用于事件的选择器路径,事件检测器126可以拦截某些方法,诸如iOSTM的sendAction方法。该sendAction方法包括参数,所述参数包括UIEvent对象,其包括与发起动作消息的事件、发送消息的发送者对象(例如,调用sendAction方法的UIControl对象)、用于接收动作消息的目标对象以及识别动作方法的选择器相关的信息。发送者对象通常是被用户触摸或选择的对象(例如,按钮)。事件检测器126可以从发送者对象向上走,并且构建包括呈现层级中的每个呈现对象的选择器路径,所述呈现层级包括绘制该发送者对象的呈现对象。事件检测器126可以存储用于每个事件的数据(包括事件自身、发送者对象、目标对象和选择器路径)并且将该数据提供至帧编码器127。
工具模块121可以将用于事件的选择器和用于呈现对象的选择器映射至相应的虚拟HTML要素。例如,工具模块121可以尝试将(用于事件和视图树的)视图类和属性映射至相应的虚拟HTML要素。在一些实施方式中,工具模块121将iOSTM属性“accessibilityIdentifier”(其将唯一标识符与用户界面中的要素相关联)映射至HTML属性“id”(其为HTML要素指定唯一标识符)。工具模块121还可以将iOSTM属性“accessibilityLabel”(其是可访问性要素的标签)映射至HTML属性“label”(其表示项目的标题)。
工具模块121还可以生成属性以包括在用于呈现对象的选择器中。例如,如果呈现对象是iOSTM故事板(storyboard)的一部分,则工具模块121可以生成属性“tag”(其是识别视图对象的整数)和属性“storyboard”(其指定在其中创建视图的故事板)。例如,用于来自“Main”故事板的名为“MyCustomLabel”类的虚拟选择器可能具有看上去如下的虚拟选择器:
“MyCustomLabel#name_label[story_board=“Main”][tag=“1”][label=”Fullname”]”。通过将iOSTM属性映射至HTML要素,事件和视图可以利用虚拟HTML要素进行索引,使得用户能够搜索特定类型的事件并且针对事件在其中发生的用户会话检索回放数据。
帧编码器127可以从窗口扫描器124和事件检测器126接收数据,并且生成包括数据或者数据的压缩版本的帧丛束129。每个帧丛束129可以包括一个或多个帧的数据。帧编码器127可以将每个帧丛束129发送至上传器128。进而,上传器128通过网络102将帧丛束129传送至评估装置150。
帧编码器127可以在将数据传送至评估装置150之前对帧的数据进行编码和/或压缩。例如,帧编码器127可以使用二进制编码对每个帧丛束129的数据进行编码。帧编码器127可以以FlatBuffer格式存储每个帧丛束。
帧编码器127可以在包含一系列运算符的字节流中对每个帧丛束129的数据进行编码。每个运算符系列可以包括通过字节值来识别的令牌集合。每个绘制运算符可以从令牌的任何组合和顺序中选择,并且在记录/渲染的时候赋予其想要的任何意义。记录可以由运算符画布令牌的存在而被隐含地定义。记录中的第一字节开始新的记录。因此,第一记录将省略显式的运算符画布令牌标识符并且简单地记录该运算符自身。
帧编码器127可以在编码之前或编码之后对至少一些数据进行预处理。例如,呈现层级(例如,视图树或显示图层树)中仅一部分会从第一帧到后续帧发生变化。帧编码器127可以评估呈现层级以识别从第一帧到后续帧发生了变化的每个呈现对象。不同于提供用于两个帧的整个呈现层级的数据,帧编码器127可以包括用于第一帧的呈现层级的数据。针对后续帧,帧编码器127可以提供相对于第一帧的呈现对象有所变化的呈现对象的数据。如果帧和后续帧完全相同,则帧编码器127可以例如连同指示其它帧相同的数据一起仅提供用于帧中的一个的数据。这些技术减少了在网络102上编码和传送的数据的量,由此提高了数据被编码的速度,减少了用户设备16用来编码数据的处理功率的量,并且减少了用来将数据传送至评估装置150的网络带宽的量。
不同于将每一帧直接渲染到最终的帧丛束FlatBuffer中,帧编码器127可以将帧渲染到临时缓冲器中。这允许帧编码器127将当前帧的呈现层级与来自先前帧的呈现层级进行比较。如果两个呈现层级相同,则帧编码器127可以重复使用来自先前帧的呈现层级的编码,这节省了大量的带宽。在一些情况下,先前帧的整个呈现层级可以被重复使用,使得仅该帧的元数据被存储在帧丛束129中。
帧编码器127可以以视图或图层级别将两个帧进行比较。例如,帧编码器127可以将视图的绘制操作的二进制编码与先前帧中的相同视图的绘制操作的二进制编码进行比较。如果针对特定视图的编码是相同的,则帧编码器127可以仅保留用于视图中的一个的二进制编码。
帧编码器127也可以压缩文本字符串。例如,在单独的字符串表中编码文本字符串并且使用标识符(例如32位标识符)引用该字符串可能比发送原始的文本字符串更加有效。每次文本字符串被存储在FlatBuffer中,就可以在FlatBuffer中存储数字的字符串标识符而不是实际的文本字符串。这允许帧编码器127尝试每个帧丛束将每个字符串编码一次。在帧编码过程期间,帧编码器127可以保持针对每个字符串的强引用,并且随后在字符串已经被完全被编码之后将强引用转换为弱引用。这允许用户设备106的操作***在可能的情况下收回字符串存储器。
每种类型的数据可以被共同存储在FlatBuffer中,以相对于将每个帧的数据共同存储在FlatBuffer中使得印象最大化或有所改善。例如,帧编码器127还可以将所有文本字符串存储在FlatBuffer的单个部分中,使得字符串表中的不同条目之间的字符串部分可以在数据被压缩时被重复使用。类似地,用于呈现对象的绘制操作可以被存储在FlatBuffer的单个部分中。帧编码器127随后可以例如使用GZip压缩对FlatBuffer中的数据进行压缩。以这种方式,网络带宽消耗被减少并且用户设备106和评估装置150用来存储帧数据的存储器资源的量可以减少。
评估装置150可以将每个帧丛束129存储在会话数据存储152中,并且如下文所描述的使用该数据来生成回放数据140和会话活动数据142。评估装置150还可以对帧以及每一帧中的用户界面事件进行索引,使得用户(例如,应用开发者108)可以搜索其中发生了特定事件的用户会话。例如,每个事件可以利用选择器以及描述该事件的数据进行索引。以这种方式,用户可以搜索事件,在所述事件中,特定对象(例如,按钮)被选择作为对象是该事件的选择器路径的一部分。
评估装置150从用户设备接收帧丛束129,并且针对每个用户会话生成用于该用户会话的回放数据140和会话活动数据142。评估装置150可以将回放数据140和会话活动数据142提供至开发了发生用户会话的应用107的应用开发者108。
回放数据140为应用开发者108呈现在用户会话期间针对应用107a的视觉变化以及在会话期间发生的其它用户活动(例如,鼠标移动)。针对应用107a的视觉变化的至少一部分对应于呈现层级中的变化以及在用户会话期间针对呈现层级中的每个呈现对象所呈现的内容。例如,回放数据140可以示出应用开发者108指示器(例如,鼠标或手指)在应用107a上的移动、用户在来自列表164的项目上的点击(包括敲击或按压)以及图像162被图像166所替换。在该示例中,图像162被图像166的替换可以对应于图像视图从在一个帧中呈现图像162变化为在后续帧中呈现图像166。类似地,文本160被文本161的替换可以对应于视图树的文本视图在一个帧中呈现文本160变化为在后续帧中呈现文本161。
会话活动数据可以向应用开发者108呈现在用户会话期间发生的事件的列表。例如,事件的列表可以指定在用户会话期间发生了两个事件Ev1和Ev2。Ev1可以对应于应用107a的初始加载,并且Ev2可以对应于来自列表164的项目上的点击。在用户会话的回放被呈现时(例如,示出鼠标移动和视觉变化),事件的列表可以被高亮以示出哪些事件对应于回放数据所呈现的视觉变化。例如,在用户会话初始回放时,Ev1可以被高亮来指示应用107a的视觉表示对应于应用107a的初始加载。一旦用户会话的回放到达用户在来自列表164的项目上点击的点时,Ev2就可以被高亮来指示图像162被图像166的替换与来自列表164的项目上的点击相对应。如下文更详细讨论的,会话活动数据还可以包括对应于在来自列表的项目上的用户点击的上下文数据,例如被点击项目的文本、针对应用107a的哪些变化对应于该用户点击和/或在用户会话期间发生的针对用户界面的其它应用的请求。
事件评估装置150可以使用针对用户会话所接收的帧丛束129中的数据来创建用于用户会话的回放数据140。在一些实施方式中,事件评估装置150通过使用指定帧中的呈现对象(例如,视图和/或图层)的布局和结构的数据、用来生成帧的每个呈现对象的绘制操作以及在该帧所表示的用户界面的呈现期间发生的事件重新绘制该用户会话的每一帧来创建回放数据140。例如,事件评估装置150可以通过识别帧的每个呈现对象并且基于用来生成如该帧的帧丛束129中的数据所指定的每个呈现对象的绘制操作在画布中渲染每个呈现对象来绘制帧。在特定示例中,评估装置150可以使用用于绘制操作的时间戳信息来按照顺序处理每个绘制操作,并且基于绘制操作重新创建呈现对象。例如,如果第一绘制操作是要在第一位置呈现图像并且第二绘制操作是要在该图像下方的第二位置呈现文本标题,则评估装置150可以处理这些绘制操作以在对应于第一位置的位置绘制图像并且在第二位置绘制文本标题。
例如,如果帧的呈现层级包括含有文本的文本视图,则评估装置150可以根据视图树数据识别文本视图及其显示位置,并且根据帧丛束的文本表以及该文本的标识符识别该文本。如果文本利用定制字体被渲染,则评估装置150还可以使用被指配给该文本的字型来以其定制字体来渲染该文本。评估装置150随后可以使用数据在画布上绘制文本。如果文本被文本的无法理解的版本所替换,则评估装置150可以检测该文本的散列或加密版本,并且在回放期间呈现指示文本在何处被替换的黑色框或其它视觉表示。评估装置150可以以类似方式来渲染其它类型的视图,例如图像视图。
评估装置150还可以使得对与用户界面的用户交互进行视觉呈现。例如,用户交互可以包括指示器移动、用户点击、用户敲击、用户滑动、缩放、滚动、聚焦或文本输入。对于用户滑动而言,回放数据140可以包括基于在连续帧丛束129中检测到的触摸点来表示一段时间内的滑动路径的数据。例如,帧丛束的序列可以例如基于从检测触摸事件的UIGestureRecognizer和/或UITapGestureRecognizer类所获得的数据,均包括沿滑动线条的触摸事件。评估装置150可以基于连续帧丛束129中的滑动的位置,在帧之间对滑动的方位进行插值。例如,滑动的位置在第一帧丛束所表示的第一帧中可以处于点A,并且该滑动的位置在紧接第一帧的第二针中可以处于点B。在该示例中,评估装置150可以在帧之间对滑动的位置进行插值,以呈现从点A移动至点B的滑动。评估装置150可以使用厄米特(Hermite)样条来估计其它手势跨显示器的滑动的移动。
在一些实施方式中,评估装置150可以在帧之间对针对用户界面的其它变化进行插值。例如,工具模块121可以基于大于回放期间的帧之间的时段的时段定期收集数据。在特定示例中,工具模块121可以收集数据并且每秒钟5次(或者以另一种适当速率)生成帧丛束,并且回放可以以每秒钟10帧进行呈现。在该示例中,评估装置150可以在每个连续帧的对之间进行插值以每秒钟回放10帧。例如,评估装置150可以对滚动、滑动、呈现层级的呈现对象的方位/大小变化、画布转换、文本变化和/或其它适当内容进行插值。
在一些实施方式中,评估装置150在web浏览器环境中呈现回放数据。在该示例中,评估装置150可以将应用的画布转换为HTML画布。例如,评估装置150可以在回放之前将FlatBuffer编码的帧丛束拆包为脚本(例如,JavaScript)。评估装置150可以例如在web浏览器中实时地回放用户会话,使得顾客服务代表可以在与用户会话的用户讨论该用户会话的同时观看该回放。
评估装置150还可以为在用户会话期间发生的至少一些用户交互生成会话活动数据142。会话活动数据142例如可以指定所发生的各种用户事件(例如,点击、文本输入、图标被选择等)的列表,以及例如在用户会话期间由工具模块121所收集并且被存储在帧丛束中的对应于用户交互的任何环境数据(例如,加速度计数据)。
图2是用于重放用户会话的示例用户界面200的图示。用户界面200包括接收用于识别会话的搜索标准的搜索字段202。例如,假设应用开发者对识别和/或观看用户在其期间点击给定原生应用的结算按钮204的会话感兴趣。用户在搜索字段202中输入搜索短语“已点击结算”。在搜索短语提交时(例如,输入并回车命令或者在提交按钮上点击),针对会话信息的请求被传送至评估装置150,所述评估装置150包括搜索装置。针对会话信息的请求例如可以包括搜索短语以及请求会话信息的应用开发者的身份和/或提供与该请求相关联的上下文的其它信息。
响应于接收到针对会话信息的请求,评估装置150可以使用入搜索短语“已点击结算”来识别用户在其期间点击了给定原生应用的结算按钮204的一个或多个会话。在一些实施方式中,评估装置150从用户会话的索引识别响应于搜索短语的会话。例如,索引可以包括将用户动作“点击”和用户界面要素“结算按钮”与在其期间用户在“结算”按钮204上进行了点击的会话相关联的一个或多个条目。
评估装置150将识别响应于该针对会话信息的请求的会话的数据提供至请求设备。在一些实施方式中,评估装置110可以通过提供与基于搜索短语被识别的一个或多个会话相关的数据来对针对会话信息的请求作出响应。继续以上示例,评估装置150可以提供基于搜索短语“已点击结算”从索引所识别的会话206的列表。如图2所图示的,用户在其中点击了结算按钮的会话包括会话1、会话2、会话3、会话4、会话5和会话6。
评估装置150还可以提供用于响应于针对会话信息的请求的一个或多个被识别的会话的回放数据和会话活动数据。例如,如图2所示,会话1被阴影表示,这指示用于会话1的回放数据可用于重放,并且用于会话1的会话活动数据可用于呈现。
用户界面200包括其中基于回放数据重放先前会话的回放区208。回放区208包括回放栏,其包括播放/暂停部分210、计数器212和滑动条部分214。播放/暂停部分210使得应用开发者能够通过与播放/暂停部分210交互来开始和停止会话的重放。计数器212提供会话的总时长(例如,1分50秒)以及当前呈现的会话部分(例如,45秒)。滑动条部分214使得应用开发者能够通过滑动该滑动条部分214内的滑动要素216来快速移动至该会话的其它部分。继续以上示例,如会话列表中的会话1的阴影所指示,回放区208正在重放会话1。
用户界面200包括会话活动区218,其中基于会话活动数据呈现在正被重放的会话期间所发生的活动。例如,会话活动区218呈现诸如会话被重放所发生的时间(例如,日、日期、一天中的时间和/或年)和/或在其处发生用户会话的用户设备的地理位置之类的信息。会话活动区218还可以呈现在会话期间发生的活动的数量(例如,点击、聚焦、页面导航或其它用户交互的数量)。
会话活动区218还识别和/或概括在被重放的用户会话期间所发生的各种活动。例如,会话活动区218指定用户在回放区208中重放的会话的期间导航至示例应用的应用页面示例://产品220,聚焦于应用页面222内的数量(Qty)要素,在结算按钮224上点击,导航至应用页面示例://结算226,并且聚焦于地址框228。在会话活动区218中列出的活动可以按照它们在会话期间发生的顺序来排列。例如,活动220在活动222、224、226和228之前发生。此外,在会话活动区218中列出的活动可以以层级方式被可见地表示。例如,活动222和224中的每个相对于活动220向右偏移,由此指示活动222和224在访问应用页面示例://产品220的期间发生。
活动列表218还可以提供有关活动的上下文数据。例如,活动222指示用户交互“聚焦”是利用Qty用户界面要素230而发生。活动列表218还可以提供与活动相关联的环境信息。例如,如果加速度计数据指示用户设备在活动发生时正被晃动,则活动列表可以包括“受挫(frustrated)”。
随着会话的重放在重放区208中继续进行,与正被呈现的重放的部分相对应的活动可以被高亮。例如,在用户聚焦于Qty要素230上之后,用户在结算按钮204上进行点击。随着重放示出鼠标从Qty要素230附近移动至结算按钮204(如虚线所示),活动224可以被阴影表示(或高亮)来指示对应于当前被重放的会话部分的会话活动。当会话的重放到达用户点击结算按钮204的点时,回放数据可以使得阴影圆圈232(或一些其它图形要素)被呈现,由此在视觉上向发行者传达发生了用户点击以及结算按钮204上的用户点击的位置。可以使用类似的动画向发行者视觉传达所发生的其它交互。例如,参考触摸屏设备,可以使用类似的阴影圆圈来视觉传达用户敲击的发生,并且可以使用延长的阴影动画来图示触摸屏上的用户滑动或其它手指移动。
如上文所讨论的,应用开发者可以从用户界面200(或另一个用户界面)请求其它会话之一(例如,会话2)的重放。例如,与会话列表206中的会话2的用户交互(例如,对其的点击)可以发起针对与会话2相关的会话信息的请求。响应于该请求,评估装置150可以向请求设备输出与会话2相关的回放数据和会话活动数据。在接收到回放数据和会话活动数据时,请求设备可以在重放区208重放会话2,并且在会话活动区218中呈现与在会话2期间发生的活动相关的信息。
在一些实施方式中,用户界面200可以包括过滤要素234。过滤要素234使得应用开发者能够对例如使用提交的搜索短语所识别的会话进行过滤。例如,应用开发者可能仅对于识别用户在其期间在结算按钮上点击但并未最终进行购买的会话感兴趣。在该示例中,用户可以提交搜索短语“已点击结算”,并且与过滤要素234交互以选择仅识别用户并未在其期间进行购买的那些会话的过滤器(例如,通过在下拉按钮上点击并且选择“并未购买”选项)。这使得应用开发者能够快速识别出感兴趣的会话,和/或识别出是什么阻止了这些用户进行购买(例如,用户界面存在的问题)。例如,应用开发者可以指定一系列会话属性以表征该应用开发者想要查看的具体类型的用户会话。
本文出于说明的目的提供了示例过滤器,但是可以按照期望使用和指定各种其它过滤器。例如,发行者可能仅对于评估在特定地理地区(例如,美国东南部、美国中部、欧洲)中执行的那些会话或者在其期间用户在一些指定时长之前(例如,2分钟内)终止了会话的那些会话感兴趣。提供诸如这些的过滤器和/或与使用过滤器所识别的会话相关的分析信息可以为应用开发者提供有关如何更好地格式化他们的用户界面和/或实现具体商业目标(例如,增加销售)的洞察力。
图3是用于捕获、编码和传送描述由原生应用所呈现的用户界面的数据的示例过程300的流程图。过程300的操作例如可以由诸如用户设备106的一个或多个数据处理装置来执行。过程300的操作也可以被实施为存储在非暂时计算机可读介质上的指令。该指令的执行使得一个或多个数据处理装置实行过程300的操作。
识别用户界面中的呈现对象的布局和结构(302)。例如,工具模块可以获得当前由应用呈现的应用的用户界面的视图、图层和/或其它适当呈现对象的结构和布局。该数据可以是表示用来生成用户界面的视图层级的一个或多个呈现层级(例如,视图树和/或显示图层树)的形式。呈现对象的布局可以指定每个呈现对象在屏幕上的位置。
每个呈现对象将其自身绘制到离屏绘制上下文(304)。工具模块可以请求每个呈现对象将其自身绘制到离屏绘制上下文。在一些实施方式中,离屏绘制上下文是并未在屏幕上呈现的PDF图形上下文。相反,当每个呈现对象将其自身绘制到PDF图形上下文时,PDF引擎可以在PDF文档中包括用来生成呈现对象的绘制操作。工具模块可以在呈现层级上迭代并且使得每个呈现对象将其自身绘制到离屏绘制上下文。
离屏绘制上下文的绘制操作与它们的相对应的呈现对象相关联(306)。如上文所描述的,可以在PDF文档中使用标记来指示哪些绘制操作对应于哪个呈现对象。工具模块可以使用标记来针对每个呈现对象识别用来生成呈现对象的绘制操作(如果有),并且将所识别的绘制操作与呈现对象相关联。
用户界面事件与呈现对象相关联(308)。例如,工具模块可以检测诸如敲击、点击等的事件。该工具模块还可以获得每个事件的选择器路径。工具模块可以使用选择器路径来确定事件的来源并且将事件与来源相关联。事件的来源可以是同样在选择器路径中指定的特定呈现对象中所呈现的对象,例如按钮。工具模块可以将事件与在选择器路径中指定的特定呈现对象相关联。
指定用户界面的布局和结构的数据、用来生成呈现对象的绘制操作以及所检测到的事件被指配给一个或多个帧丛束(310)。帧丛束可以包括用于应用的一个或多个帧的数据。帧丛束可以被存储在FlatBuffer中。
帧丛束被编码和压缩(312)。例如,工具模块可以使用二进制编码对帧丛束进行编码。工具模块可以使用例如GZip压缩的一种或多种压缩技术对帧丛束进行压缩。如上文所描述的,可以例如通过将某些类型的数据在压缩之前存储在一起而对数据进行预处理来使得压缩最大化或得到改善。
帧丛束被发送至服务器(314)。例如,帧丛束可以被发送至评估装置,所述评估装置对帧丛束中的数据进行索引,存储经索引的数据,并且生成回放数据以回放用户会话。
图4是用于生成并输出回放数据的示例过程400的流程图。过程400的操作例如可以由诸如评估装置150的一个或多个数据处理装置来执行。过程400的操作也可以被实施为存储在非暂时计算机可读介质上的指令。该指令的执行使得一个或多个数据处理装置实行过程400的操作。
接收用于用户会话的帧丛束(402)。在一些实施方式中,工具模块在应用打开时在用户设备处被启动。工具模块可以在与应用的用户会话期间收集用于应用的用户界面的一个或多个显示的帧的数据。例如,工具模块可以针对每个帧收集应用用来生成用户界面的呈现层级(例如,视图树和/或显示图层树)的数据、用来生成每个呈现层级的每个呈现对象的视觉表示的绘制操作、描述事件(例如,用户点击、滚动、滑动、图标选择等)的数据以及如上文描述的其它数据。
基于帧丛束中包括的数据生成回放数据(404)。例如,每个帧可以基于用于帧的帧丛束中包括的数据而在画布(例如,HTML画布)上被重新绘制。在一些实施方式中,可以通过对两个连续帧进行插值来生成附加帧,例如以便满足将在其中呈现回放的web浏览器的回放速率。
在回放期间或之前,压缩数据可以被解压缩。例如,如果特定的帧丛束仅包括呈现层级中从先前帧被改变的一个或多个变化的呈现对象,则解压缩可以包括结合经变化的视图使用先前帧的呈现层级的呈现对象来生成用于特定帧丛束的帧的回放。
在回放期间,帧可以以它们被记录的顺序被重建并呈现以便仿真实际的用户会话。例如,用于每个帧的绘制操作可以在画布上被处理并重建从而重建每个帧的呈现。可以对帧进行处理以便创建该帧的回放,使得回放看上去是用户会话的实时回放。所发生的事件(例如敲击事件)也可以基于在用于用户会话的帧丛束中指定的事件数据而被呈现。例如,可以使用时间戳信息(或帧丛束信息)将事件与被绘制到画布的相对应的帧相关联。
如果应用在用户会话期间包括了web视图,则资源的内容以及与该资源的任何用户交互也可以在回放期间被呈现。在一些实施方式中,评估装置可以在回放期间剪切呈现应用视图的画布的窗口并且在该窗口中呈现web视图的web内容。窗口在用户会话期间可以处于与应用的web视图相同(或相似)的位置。
该说明书中所描述的主题和操作的实施例可以以数字电子电路来实施,或者以计算机软件、固件或硬件来实施,包括该说明书中所公开的结构及其结构等同形式,或者以它们中的一种或多种的组合来实施。该说明书中所描述主题的实施例可以被实施为一个或多个计算机程序,即在计算机存储介质上编码以便由数据处理装置执行或者控制所述数据处理装置的操作的计算机程序指令的一个或多个模块。可替换地或除此之外,该程序指令可以在人为生成的传播信号上编码,例如机器生成的电气、光学或电磁信号,其被生成以编码信息以便传输至适当的接收器装置以供数据处理装置来执行。计算机存储介质可以是机器可读存储设备、机器可读存储衬底、随机或串行访问存储器阵列或设备,或者它们中的一个或多个的组合,或者被包括在其中。此外,虽然计算机存储介质并不是传播信号,但是计算机存储介质可以是在人为生成的传播信号中编码的计算机程序指令的来源或目的地。计算机存储介质也可以是一个或多个单独的物理组件或介质(例如,多个CD、碟片或其它存储设备),或者被包括在其中。
该说明书中所描述的操作可以被实施为由数据处理装置对存储在一个或多个计算机可读存储设备上或者从其它来源接收的数据所执行的操作。
术语“数据处理装置”包含所有类型的用于处理数据的装置、设备和机器,例如包括可编程处理器、计算机、片上***或者前述的多个或其组合。该装置还可以包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为正在讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理***、操作***、跨平台运行时间环境、虚拟机或者它们中的一个或多个的组合的代码。装置和执行环境能够实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
计算机程序(也被称作程序、软件、软件应用、脚本或代码)能够以任意形式的编程语言进行编写,包括编译或解释语言,声明或过程语言,并且其可以以任意形式来部署,包括作为独立程序或者作为适于在计算环境中使用的模块、组件、子例程、对象或其它单元。计算机程序可以对应于文件***中的文件,但是并非需要如此。程序可以存储在保存其它程序或数据(例如,标记语言文档中所存储的一个或多个脚本)的文件的一部分之中,存储在专用于所讨论程序的单个文件中,或者存储在多个协同文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序能够被部署为在一台计算机上执行或者在位于一个地点或跨多个地点分布并且通过通信网络进行互连的多台计算机上执行。
该说明书中所描述的过程和逻辑流程能够由一个或多个可编程计算机来实施,所述可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来实行功能。所述处理和逻辑流程还能够由例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)的专用逻辑电路所实行,并且装置也能够被实施为所述专用逻辑电路。
适于执行计算机程序的处理器例如可以包括通用或专用微处理器二者,以及任意其它类型的一个或多个处理器。通常,处理器将从只读存储器或随机访问存储器或者其二者接收指令和数据。计算机的必要元素为用于执行根据指令的动作的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括一个或多个用于存储数据的一个或多个大型存储设备,或者与之操作耦合以往来于其接收和传送数据,上述大型存储设备例如磁盘、磁性光盘或光盘。然而,计算机并非需要具有这样的设备。此外,计算机可以被嵌入另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位***(GPS)接收器,或者便携式存储设备(例如,通用串行总线(USB)闪存盘),这只是举出几个示例。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或便携式磁盘;磁性光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器能够被补充以专用逻辑电路或者整合在其中。
为了提供与用户的交互,该说明书中所描述的主题的实施例能够在计算机上实施,该计算机具有例如CRT(阴极射线管)或LCD(液晶显示器)监视器的用于向用户显示信息的显示设备以及用户能够通过其向计算机提供输入的键盘和例如鼠标或轨迹球的指示设备。也能够使用其它类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任意形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;以及来自用户的输入能够以任意形式被接收,包括声音、语音或触觉输入。此外,计算机能够通过往来于用户所使用的设备发送和接收文档而与用户进行交互;例如,通过响应于从用户的客户端设备上的web浏览器所接收到的请求而向该web浏览器发送网页。
该说明书中所描述的主题的实施例能够在计算***中实施,该计算***包括例如作为数据服务器的后端组件,或者包括例如应用服务器的中间件组件,或者包括例如客户端计算机的前端组件,或者一个或多个这样的后端、中间件或前端组件的任意组合,上述客户端计算机具有用户能够通过其而与该说明书所描述主题的实施方式进行交互的图形用户界面或Web浏览器。该***的组件能够通过例如通信网络之类的任意形式或介质的数字数据通信进行互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网络(例如,因特网)以及对等网络(例如,自组织对等网络)。
计算***可以包括客户端和服务器。客户端和服务器通常互相远离并且典型地通过通信网络进行交互。客户端和服务器的关系源自于在相应计算机上运行并且互相具有客户端-服务器关系的计算机程序。在一些实施例中,(例如,出于向与客户端进行交互的用户显示数据并且从所述用户接收用户输入的目的)服务器向客户端设备传送数据(例如,HTML页面)。可以在服务器处从客户端设备接收在该客户端设备处所生成的数据(例如,用户交互的结果)。
虽然该说明书包含了许多具体的实施方式细节,但是这些并不应当被理解为是对任何发明或者可以请求保护的范围的限制,而是作为可能对特定发明的特定实施例而言具体的特征的描述。该说明书中以单独实施例为背景所描述的某些特征也能够在单个实施例中组合实施。相反,以单个实施例为背景所描述的各个特征也能够在多个实施例中单独实施或者以任意适当的子组合实施。此外,虽然特征在上文中可以被描述为以某种组合发生作用并且甚至最初如此要求保护,但是来所请求保护的组合的一个或多个特征在一些情况下能够脱离该组合并且所请求保护的组合可以针对子组合或子组合的变化形式。
类似地,虽然操作在图中以特定顺序进行描绘,但是这并不应当被理解为为了实现所期望的结果而要求这样的操作以所示出的特定顺序或以连续顺序来执行,或者执行所有所图示的操作。在某些情况下,多任务和并行处理可能是有利的。此外,以上所说明的各个***组件的划分并不应当被理解为要求这样的划分,并且应当理解的是,所描述的程序组件和***一般能够共同集成在单个软件产品中或者被封装为多个软件产品。
已经描述了该主题的特定实施例。其它实施例处于以下权利要求的范围之内。在一些情况下,在权利要求中被引用的动作可以以不同顺序执行并且仍然实现所期望的结果。此外,附图中描绘的过程并不一定要求所示出的特定顺序或连续顺序来实现所期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。

Claims (24)

1.一种方法,包括:
接收用于与原生应用的用户会话的多个帧丛束,每个帧丛束包括指定以下的数据:
对于一个或多个时间点中的每个:
由所述原生应用用来在所述时间点处生成所述原生应用的用户界面的每个呈现对象的呈现位置,每个呈现对象是在所述用户界面的一部分内生成其自身的视觉表示的对象;以及
针对一个或多个呈现对象,被执行以生成所述呈现对象的所述视觉表示的一个或多个绘制操作;以及
基于由所述多个帧丛束指定的数据,生成回放数据,所述回放数据呈现与被执行以生成每个呈现对象的所述视觉表示的所述绘制操作相对应的所述用户界面的视觉变化。
2.根据权利要求1所述的方法,其中,每个呈现对象包括视图或图层中的一个,以及其中每个帧丛束包括指定每个视图或图层的层级表示的数据。
3.根据权利要求1所述的方法,其中,生成所述回放数据包括:基于用来生成所述呈现对象的所述绘制操作来重建每个呈现对象的所述视觉表示。
4.根据权利要求1所述的方法,其中,所述原生应用的工具代码生成每个帧丛束,包括使得每个呈现对象的每个图层将其自身绘制到离屏绘制上下文并且存储指定被执行以在所述离屏绘制上下文中绘制每个呈现对象的每个图层的绘制操作的数据。
5.根据权利要求4所述的方法,其中,所述绘制上下文是基于便携式文档格式(PDF)的绘制上下文,并且指定每个绘制操作的数据被存储在PDF文档中。
6.根据权利要求4所述的方法,其中,针对每个给定呈现对象,所述工具代码使得所述原生应用在其上运行的操作***的绘制库在所述视图被绘制到所述离屏绘制上下文之前向所述离屏绘制上下文绘制用于所述呈现对象的起始标记以及在所述呈现对象已经被绘制到所述离屏绘制上下文之后绘制用于所述呈现对象的结束标记。
7.根据权利要求6所述的方法,其中,所述工具代码将在所述起始标记和所述结束标记之间的所述离屏绘制上下文的每个绘制操作指配给所述给定呈现对象。
8.根据权利要求1所述的方法,其中:
每个帧丛束包括指定在一个或多个呈现对象的呈现期间发生的一个或多个用户界面事件的数据;以及
生成所述回放数据包括在所述一个或多个呈现对象的呈现期间重建所述一个或多个用户界面事件。
9.一种***,包括:
数据存储;以及
一个或多个计算机,所述一个或多个计算机与所述数据存储交互并且实行使得所述一个或多个计算机执行操作的指令,所述操作包括:
接收用于与原生应用的用户会话的多个帧丛束,每个帧丛束包括指定以下的数据:
对于一个或多个时间点中的每个:
由所述原生应用用来在所述时间点处生成所述原生应用的用户界面的每个呈现对象的呈现位置,每个呈现对象是在所述用户界面的一部分内生成其自身的视觉表示的对象;以及
针对一个或多个呈现对象,被执行以生成所述呈现对象的所述视觉表示的一个或多个绘制操作;以及
基于由所述多个帧丛束指定的数据,生成回放数据,所述回放数据呈现与被执行以生成每个呈现对象的所述视觉表示的所述绘制操作相对应的所述用户界面的视觉变化。
10.根据权利要求9所述的***,其中,每个呈现对象包括视图或图层中的一个,以及其中每个帧丛束包括指定每个视图或图层的层级表示的数据。
11.根据权利要求9所述的***,其中,生成所述回放数据包括:基于用来生成所述呈现对象的所述绘制操作来重建每个呈现对象的所述视觉表示。
12.根据权利要求9所述的***,其中,所述原生应用的工具代码生成每个帧丛束,包括使得每个呈现对象的每个图层将其自身绘制到离屏绘制上下文并且存储指定被执行以在所述离屏绘制上下文中绘制每个呈现对象的每个图层的绘制操作的数据。
13.根据权利要求12所述的***,其中,所述绘制上下文是基于便携式文档格式(PDF)的绘制上下文,并且指定每个绘制操作的数据被存储在PDF文档中。
14.根据权利要求12所述的***,其中,针对每个给定呈现对象,所述工具代码使得所述原生应用在其上运行的操作***的绘制库在所述视图被绘制到所述离屏绘制上下文之前向所述离屏绘制上下文绘制用于所述呈现对象的起始标记以及在所述呈现对象已经被绘制到所述离屏绘制上下文之后绘制用于所述呈现对象的结束标记。
15.根据权利要求14所述的***,其中,所述工具代码将在所述起始标记和所述结束标记之间的所述离屏绘制上下文的每个绘制操作指配给所述给定呈现对象。
16.根据权利要求10所述的***,其中:
每个帧丛束包括指定在一个或多个呈现对象的呈现期间发生的一个或多个用户界面事件的数据;以及
生成所述回放数据包括在所述一个或多个呈现对象的呈现期间重建所述一个或多个用户界面事件。
17.一种存储指令的非暂时计算机可读介质,所述指令在由一个或多个计算机执行时使得所述一个或多个计算机执行操作,所述操作包括:
接收用于与原生应用的用户会话的多个帧丛束,每个帧丛束包括指定以下的数据:
对于一个或多个时间点中的每个:
由所述原生应用用来在所述时间点处生成所述原生应用的用户界面的每个呈现对象的呈现位置,每个呈现对象是在所述用户界面的一部分内生成其自身的视觉表示的对象;以及
针对一个或多个呈现对象,被执行以生成所述呈现对象的所述视觉表示的一个或多个绘制操作;以及
基于由所述多个帧丛束指定的数据,生成回放数据,所述回放数据呈现与被执行以生成每个呈现对象的所述视觉表示的所述绘制操作相对应的所述用户界面的视觉变化。
18.根据权利要求17所述的非暂时计算机可读介质,其中,每个呈现对象包括视图和图层中的一个,以及其中每个帧丛束包括指定每个视图或图层的层级表示的数据。
19.根据权利要求17所述的非暂时计算机可读介质,其中,生成所述回放数据包括:基于用来生成所述呈现对象的所述绘制操作来重建每个呈现对象的所述视觉表示。
20.根据权利要求17所述的非暂时计算机可读介质,其中,所述原生应用的工具代码生成每个帧丛束,包括使得每个呈现对象的每个图层将其自身绘制到离屏绘制上下文并且存储指定被执行以在所述离屏绘制上下文中绘制每个呈现对象的每个图层的绘制操作的数据。
21.根据权利要求20所述的非暂时计算机可读介质,其中,所述绘制上下文是基于便携式文档格式(PDF)的绘制上下文,并且指定每个绘制操作的数据被存储在PDF文档中。
22.根据权利要求20所述的非暂时计算机可读介质,其中,针对每个给定呈现对象,所述工具代码使得所述原生应用在其上运行的操作***的绘制库在所述视图被绘制到所述离屏绘制上下文之前向所述离屏绘制上下文绘制用于所述呈现对象的起始标记,以及在所述呈现对象已经被绘制到所述离屏绘制上下文之后绘制用于所述呈现对象的结束标记。
23.根据权利要求22所述的非暂时计算机可读介质,其中,所述工具代码将在所述起始标记和所述结束标记之间的所述离屏绘制上下文的每个绘制操作指配给所述给定呈现对象。
24.根据权利要求17所述的非暂时计算机可读介质,其中:
每个帧丛束包括指定在一个或多个呈现对象的呈现期间发生的一个或多个用户界面事件的数据;以及
生成所述回放数据包括在所述一个或多个呈现对象的呈现期间重建所述一个或多个用户界面事件。
CN201980027540.XA 2018-03-30 2019-03-29 捕获并处理与原生应用的用户界面的交互 Pending CN112074813A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862650841P 2018-03-30 2018-03-30
US62/650,841 2018-03-30
PCT/US2019/024831 WO2019191584A1 (en) 2018-03-30 2019-03-29 Capturing and processing interactions with a user interface of a native application

Publications (1)

Publication Number Publication Date
CN112074813A true CN112074813A (zh) 2020-12-11

Family

ID=66429513

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980027540.XA Pending CN112074813A (zh) 2018-03-30 2019-03-29 捕获并处理与原生应用的用户界面的交互

Country Status (4)

Country Link
US (2) US20190303178A1 (zh)
EP (1) EP3776193B1 (zh)
CN (1) CN112074813A (zh)
WO (1) WO2019191584A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11249833B2 (en) * 2019-04-11 2022-02-15 Citrix Systems, Inc. Error detection and remediation using an error signature
US11249832B2 (en) 2019-04-11 2022-02-15 Citrix Systems, Inc. Session triage and remediation systems and methods
WO2021003697A1 (en) * 2019-07-10 2021-01-14 Micro Focus Llc Automated test replay with sensitive information obfuscation
CN112925593A (zh) * 2019-12-05 2021-06-08 北京沃东天骏信息技术有限公司 一种目标图层缩放旋转的方法和装置
US11341205B1 (en) * 2020-05-20 2022-05-24 Pager Technologies, Inc. Generating interactive screenshot based on a static screenshot
US11132113B1 (en) 2020-07-23 2021-09-28 Microsoft Technology Licensing, Llc Interaction signal processing in distributed computing systems
CN116157781A (zh) 2020-09-13 2023-05-23 甲骨文国际公司 用于丰富客户端应用运行时框架的开箱即用的遥测
CN112153064B (zh) * 2020-09-28 2022-11-22 上海缓存命中科技有限公司 应用商店及其使用方法

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1140861A (zh) * 1995-05-12 1997-01-22 索尼公司 用于产生动画数据的方法和装置
CN101213540A (zh) * 2005-07-01 2008-07-02 微软公司 在交互式媒体环境中呈现和合成多个应用程序
CN101286166A (zh) * 2007-04-12 2008-10-15 索尼株式会社 信息呈现装置、信息呈现方法和计算机程序
US20120081378A1 (en) * 2010-10-01 2012-04-05 Jean-Francois Roy Recording a Command Stream with a Rich Encoding Format for Capture and Playback of Graphics Content
CN102414676A (zh) * 2009-04-22 2012-04-11 微软公司 媒体时间线交互
US20120130967A1 (en) * 2010-11-18 2012-05-24 Microsoft Corporation Classification of transactional queries based on identification of forms
US20130198614A1 (en) * 2011-02-15 2013-08-01 Adobe Systems Incorporated Methods and Systems for Designing Documents with Inline Scrollable Elements
CN103339600A (zh) * 2010-10-01 2013-10-02 Flex Electronics ID Co.,Ltd. 立即远程呈现
US20140280517A1 (en) * 2013-03-15 2014-09-18 Foresee Results, Inc. System and Method for Capturing Interaction Data Relating to a Host Application
CN104813291A (zh) * 2012-12-31 2015-07-29 苹果公司 备份用户界面
CN105069150A (zh) * 2015-08-24 2015-11-18 上海艺赛旗软件有限公司 屏幕录像的压缩、存储、回放方法及压缩、存储***
CN106663112A (zh) * 2014-11-26 2017-05-10 谷歌公司 呈现与实体相关联的事件的信息卡
CN107066794A (zh) * 2015-12-23 2017-08-18 汤姆科技成像***有限公司 用于评估医学研究数据的方法和***
US9766769B1 (en) * 2014-12-31 2017-09-19 FullStory, Inc. Evaluation of interactions with a user interface
CN107231817A (zh) * 2016-01-25 2017-10-03 谷歌公司 降低地图界面中的时延

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151033A (en) * 1995-05-12 2000-11-21 Sony Computer Entertainment Inc. Method and apparatus for producing animation data
CN1140861A (zh) * 1995-05-12 1997-01-22 索尼公司 用于产生动画数据的方法和装置
CN101213540A (zh) * 2005-07-01 2008-07-02 微软公司 在交互式媒体环境中呈现和合成多个应用程序
CN101286166A (zh) * 2007-04-12 2008-10-15 索尼株式会社 信息呈现装置、信息呈现方法和计算机程序
CN102414676A (zh) * 2009-04-22 2012-04-11 微软公司 媒体时间线交互
CN103339600A (zh) * 2010-10-01 2013-10-02 Flex Electronics ID Co.,Ltd. 立即远程呈现
US20120081378A1 (en) * 2010-10-01 2012-04-05 Jean-Francois Roy Recording a Command Stream with a Rich Encoding Format for Capture and Playback of Graphics Content
US20120130967A1 (en) * 2010-11-18 2012-05-24 Microsoft Corporation Classification of transactional queries based on identification of forms
US20130198614A1 (en) * 2011-02-15 2013-08-01 Adobe Systems Incorporated Methods and Systems for Designing Documents with Inline Scrollable Elements
CN104813291A (zh) * 2012-12-31 2015-07-29 苹果公司 备份用户界面
US20140280517A1 (en) * 2013-03-15 2014-09-18 Foresee Results, Inc. System and Method for Capturing Interaction Data Relating to a Host Application
CN106663112A (zh) * 2014-11-26 2017-05-10 谷歌公司 呈现与实体相关联的事件的信息卡
US9766769B1 (en) * 2014-12-31 2017-09-19 FullStory, Inc. Evaluation of interactions with a user interface
US20180173375A1 (en) * 2014-12-31 2018-06-21 FullStory, Inc. Evaluation of interactions with a user interface
CN105069150A (zh) * 2015-08-24 2015-11-18 上海艺赛旗软件有限公司 屏幕录像的压缩、存储、回放方法及压缩、存储***
CN107066794A (zh) * 2015-12-23 2017-08-18 汤姆科技成像***有限公司 用于评估医学研究数据的方法和***
CN107231817A (zh) * 2016-01-25 2017-10-03 谷歌公司 降低地图界面中的时延

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: ""Graphics Contexts"", pages 1 - 3, Retrieved from the Internet <URL:《https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html》> *
FLYLIB.COM: ""Creating PDF Documents"", pages 1 - 4, Retrieved from the Internet <URL:《https://flylib.com/books/en/3.310.1.74/1/》> *
刘佳升;张凤军;谭国富;戴志军;戴国忠;王宏安;: "MTBuilder:一个多触点交互桌面界面工具", 计算机辅助设计与图形学学报, no. 10, 15 October 2011 (2011-10-15), pages 23 - 29 *

Also Published As

Publication number Publication date
WO2019191584A1 (en) 2019-10-03
EP3776193B1 (en) 2023-10-25
US20190303178A1 (en) 2019-10-03
US20200117488A1 (en) 2020-04-16
EP3776193A1 (en) 2021-02-17

Similar Documents

Publication Publication Date Title
EP3776193B1 (en) Capturing and processing interactions with a user interface of a native application
US11593131B2 (en) Capturing and processing interactions with a user interface of a native application
US10067730B2 (en) Systems and methods for enabling replay of internet co-browsing
EP2650790B1 (en) Method for remote tracking and replay of user interaction with a webpage
US7836409B2 (en) Systems and methods for using interaction information to deform representations of digital content
US10417308B2 (en) Commenting dynamic content
US20110246879A1 (en) Systems and Methods for Remote Replay of User Interaction with a Webpage
KR20040044373A (ko) 비디오 썸네일 및 그 생성 방법
US20180348972A1 (en) Lithe clip survey facilitation systems and methods
CN114357345A (zh) 图片处理方法、装置、电子设备及计算机可读存储介质
WO2016130344A1 (en) Supporting digital ink in markup language documents
WO2019237055A1 (en) Interactive file generation and execution
EP4022481B1 (en) Protecting user privacy in user interface data collection for native applications
US11711223B1 (en) Protecting user privacy in playback of user sessions
CN115563320A (zh) 信息回复方法、装置、电子设备、计算机存储介质和产品
CN115563319A (zh) 信息回复方法、装置、电子设备、计算机存储介质和产品
CN114730340A (zh) 在用户界面数据收集中保护用户隐私
US11966320B1 (en) Techniques for capturing software application session replay data from devices
CA3056598A1 (en) Systems and methods for enabling replay of internet co-browsing
GB2480896A (en) Method for enhancing downloadable information

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination