“核心” Ping(已弃用)¶
此移动设备专用 Ping 旨在以简洁的格式提供最关键的数据,以便能够频繁上传。
由于此 Ping 用于衡量留存率,因此应在每次浏览器打开时发送。
提交将根据 Edge 服务器规范进行
/submit/telemetry/docId/docType/appName/appVersion/appUpdateChannel/appBuildID
docId
是用于去重的 UUIDdocType
为“核心”appName
为“Fennec”appVersion
是应用程序的版本(例如“46.0a1”)appUpdateChannel
为“发布版”、“测试版”等。appBuildID
是构建编号
注意:以下计数(例如搜索和使用时间)是“自上次 Ping 以来”,而不是整个应用程序生命周期的总数。
结构
{
"v": 10, // ping format version
"clientId": <string>, // client id, e.g.
// "c641eacf-c30c-4171-b403-f077724e848a"
"seq": <positive integer>, // running ping counter, e.g. 3
"locale": <string>, // application locale, e.g. "en-US"
"os": <string>, // OS name.
"osversion": <string>, // OS version.
"device": <string>, // Build.MANUFACTURER + " - " + Build.MODEL
// where manufacturer is truncated to 12 characters
// & model is truncated to 19 characters
"arch": <string>, // e.g. "arm", "x86"
"profileDate": <pos integer>, // Profile creation date in days since
// UNIX epoch.
"defaultSearch": <string>, // Identifier of the default search engine,
// e.g. "yahoo".
"displayVersion": <string>, // Version displayed to user, e.g. 57.0b3 (optional)
"distributionId": <string>, // Distribution identifier (optional)
"campaignId": <string>, // Adjust's campaign identifier (optional)
"created": <string>, // date the ping was created
// in local time, "yyyy-mm-dd"
"tz": <integer>, // timezone offset (in minutes) of the
// device when the ping was created
"sessions": <integer>, // number of sessions since last upload
"durations": <integer>, // combined duration, in seconds, of all
// sessions since last upload
"searches": <object>, // Optional, object of search use counts in the
// format: { "engine.source": <pos integer> }
// e.g.: { "yahoo.suggestion": 3, "other.listitem": 1 }
"experiments": [<string>, /* … */], // Optional, array of identifiers
// for the active experiments
"accessibilityServices": [<string>, /* … */], // Optional, array of identifiers for
// enabled accessibility services that
// interact with our android products.
"flashUsage": <integer>, // number of times flash plugin is played since last upload
"defaultBrowser": <boolean> // true if the user has set Firefox as default browser
"bug_1501329_affected": <boolean> // true if Firefox previously used canary clientId
// when submitting telemetry
"fennec": <object> // Fennec only.
// Block of a variety of fields of different types.
// Used to understand the usage of Fennec features in the release population
// to understand when Fenix is ready to support Fennec users.
{
"new_tab": {
"top_sites_clicked": <int>, // Number of times a Top Site was opened from the Awesome Screen.
// Resets after each sent core ping.
"pocket_stories_clicked": <int>, // Number of time a Pocket Recommended website was opened
// from the Awesome Screen.
// Resets after each sent core ping.
}
"settings_advanced": {
"restore_tabs": <boolean>, // State of the "Settings/Advanced/Restore Tabs" setting
"show_images": <string>, // State of the "Settings/Advanced/Show images" setting
// Value will be be "user-specified" for any non-default values
"show_web_fonts": <boolean>, // State of the "Settings/Advanced/Show web fonts" setting
},
"settings_general": {
"full_screen_browsing": <boolean>, // Current state of the
// "Settings/General/Full-screen browsing" setting.
"tab_queue": <boolean>, // State of the "Settings/General/Tab queue" setting.
"tab_queue_usage_count": <int>, // Number of tabs opened through Tab Queue.
// Resets after each sent core ping.
"compact_tabs": <boolean>, // State of the "Settings/General/Compact tabs" setting.
"homepage": {
"custom_homepage": <boolean>, // "true" if not "about:home".
"custom_homepage_use_for_newtab": <boolean>, // If the "Settings/General/Home/Also use for new tabs"
// setting is enabled.
"topsites_enabled": <boolean>, // If the "Settings/General/Home/Top Sites"
// setting is set to "Show".
"pocket_enabled": <boolean>, // If the "Settings/General/Home/Top Sites/Recommended by Pocket"
// setting is enabled.
"recent_bookmarks_enabled": <boolean>, // If the "Settings/General/Home/Top Sites/
// Additional Content/Recent Bookmarks"
// setting is enabled.
"visited_enabled": <boolean>, // If the "Settings/General/Home/Top Sites/Additional Content/Visited"
// setting is enabled.
bookmarks_enabled": <boolean>, // If the "Settings/General/Home/Bookmarks" setting is set to "Show".
"history_enabled": <boolean>, // If the "Settings/General/Home/History" setting is set to "Show".
}
},
"settings_privacy": {
"do_not_track": <boolean>, // If the "Settings/Privacy/Do not track" is enabled.
"master_password": <boolean>, // If the "Settings/Privacy/Use master password" is enabled.
"master_password_usage_count": <int>, // Number of times the user has entered their master password.
// Resets after each sent core ping.
},
"settings_notifications": {
"product_feature_tips": <boolean>, // If the "Settings/Notifications/Product and feature tips"
// setting is enabled.
},
"addons": {
"active": [addon_id_1, addon_id_2, …, ], // From all installed addons, which ones are active.
"disabled": [addon_id_1, addon_id_2, …], // From all installed addons, which ones are disabled.
},
"page_options": {
"save_as_pdf": <int>, // Number of times the user has used "Page/Save to PDF".
// Resets after each sent core ping.
"print": <int>, // Number of times the user has used the "Page/Print".
// Resets after each sent core ping.
"total_added_search_engines": <int>, // The absolute number of user added search engines,
// not just those added during this session.
"total_sites_pinned_to_topsites": <int>, // The absolute number of times the user has used
// the "Pin Site" functionality.
// Not just those added during this session.
"view_source": <int>, // Number of times the user has used the "Page/View Page Source".
// Resets after each sent core ping.
"bookmark_with_star": <int>, // The number of times the user has used the "Menu / <Star>".
// Resets after each sent core ping.
"current_pwas_count": <int>, // On Android >=25 - a positive number of PWAs currently on
// homescreen, installed from this app.
// On Android <25 - a default of "-1".
},
"sync": {
"only_over_wifi": <boolean>, // "true" if the "Settings/Sync/Sync only over Wi-Fi"
// setting is enabled.
// null if the user is not signed into Sync.
}
}
}
字段详情¶
设备¶
该 device
字段填充了硬件制造商指定的信息。因此,它可能过长,并使用过多的有限用户数据。为了避免这种情况,我们限制了字段的长度。我们更有可能发生制造商内部模型的冲突(例如“Galaxy S5”与“Galaxy Note”),而不是缩短的制造商名称的冲突,因此我们为模型提供了比制造商更多的字符。
分发 ID¶
该 distributionId
包含给定分发版本的 preferences.json 中指定的分发 ID。有关分发的更多信息,请参见 此处。
它是可选的。
活动 ID¶
该 campaignId
包含活动标识符,例如“3ly8t0”。它由 Adjust 生成,它只能用于识别活动,但不能定位到特定用户。
它是可选的,因为并非每个人一开始都有活动。
默认搜索¶
在 Android 上,此字段可能为 null
。要获取引擎,我们依赖于 SearchEngineManager#getDefaultEngine
,它会在多个位置进行搜索以查找搜索引擎标识符
共享首选项
分发版(如果存在)
本地化的默认引擎
如果无法检索标识符,则此字段为 null
。如果检索到标识符,我们将尝试从搜索插件(按顺序)创建搜索引擎实例
在分发版中
来自与浏览器一起提供的本地化插件
安装在配置文件目录中的第三方插件
如果插件无法创建搜索引擎实例,则此字段也为 null
。
当将自定义搜索引擎设置为默认搜索引擎时,此字段也可能为 null
。
会话 & 时长¶
在 Android 上,会话是指 Firefox 处于前台焦点的时间。sessions 跟踪自上次上传以来的会话数,而 durations 是所有这些会话的累积时长(以秒为单位)。请注意,显示对话框(包括 Firefox 对话框)将使 Firefox 失去焦点并结束当前会话。
当 Firefox 完全隐藏时记录会话的实现是可取的(例如,为了避免上述对话框问题),但是,实现起来更复杂,因此我们选择不这样做,至少在初始实现中是这样。
配置文件日期¶
在 Android 上,此值在配置文件创建时创建并检索,或者对于旧版配置文件,从包安装时间获取(注意:这与配置文件创建时间并不完全相同,但我们为了简化实现而妥协了)。
此外,在 Android 上,如果发生以下所有事件,则此字段可能为 null
times.json 文件不存在
无法将包安装日期持久保存到磁盘
我们不只是返回包安装时间(即使无法将日期持久保存到磁盘)的原因是确保值在我们开始发送它后不会更改:我们只想发送一致的值。
搜索¶
这描述了搜索引擎的使用情况(计数)。格式为 { “<引擎标识符>.<来源>”” : 计数 } 这是可选的,因为用户可能从未使用过搜索功能。启用扩展遥测(预发布版本)与否没有区别。
可能的值
{
"yahoo.listitem":2,
"duckduckgo.listitem":1,
"google.suggestion":1
}
<引擎标识符>:搜索引擎的标识符。标识符的收集方式与桌面相同。我们仅在以下情况下记录搜索引擎名称:
内置或建议的搜索引擎带有 ID(包括各种分发场景中的合作伙伴搜索引擎)。如果它不是内置引擎,我们将显示“null”或“其他”。
如果用户启用了“健康报告”和核心 Ping。
<来源>:它来自 UI 遥测中的某个“方法”。可能的值
actionbar:用户在 URL 地址栏中键入内容并按 Enter 使用默认搜索引擎
listitem:用户从屏幕底部辅助搜索引擎列表中选择搜索引擎
suggestion:用户点击搜索建议,或者在禁用建议的情况下,点击对应主引擎的行
辅助功能服务¶
这描述了用户设备上当前启用了哪些辅助功能服务,以及这些服务可能与我们的产品交互。这是可选的,因为用户通常没有启用任何辅助功能服务。如果存在,则值为辅助功能服务 ID 列表。
fennec.new_tab.top_sites_clicked¶
该 top_sites_clicked 字段包含自上次发送核心 Ping 以来从新标签页打开热门网站的次数。此计数器在发送核心 Ping 后重置。
Fennec.new_tab.pocket_stories_clicked¶
该 pocket_stories_clicked 包含自上次发送核心 Ping 以来从新标签页打开 Pocket 故事的次数。此计数器在发送核心 Ping 后重置。
Fennec.settings_advanced.restore_tabs¶
该 restore_tabs 字段包含“设置/高级/恢复标签”设置的状态。对于“始终恢复”,它为 true;对于“退出 Firefox 后不恢复”,它为 false。该值在发送核心 Ping 时确定。
Fennec.settings_advanced.show_images¶
该 show_images 字段包含“设置/高级/显示图像”设置的状态。如果设置是“始终”,则为字符串值“default”,否则为“user~specified”。该值在发送核心 Ping 时确定。
Fennec.settings_advanced.show_web_fonts¶
该 show_web_fonts 字段是布尔值,包含“设置/高级/显示网页字体”设置的当前状态。该值在发送核心 Ping 时确定。
Fennec.settings_general.full_screen_browsing¶
该 full_screen_browsing 字段是布尔值,包含“设置/常规/全屏浏览”设置的当前状态。该值在发送核心 Ping 时确定。
Fennec.settings_general.tab_queue¶
该 tab_queue 字段是布尔值,包含“设置/常规/标签队列”设置的当前状态。该值在发送核心 Ping 时确定。
Fennec.settings_general.tab_queue_usage_count¶
该 tab_queue_usage_count 是一个计数器,通过标签队列打开的标签数会递增。它包含自上次发送核心 Ping 以来打开的已排队标签的总数。此计数器在发送核心 Ping 后重置。
Fennec.settings_general.compact_tabs¶
该 compact_tabs 字段是布尔值,包含“设置/常规/紧凑标签”设置的当前状态。该值在发送核心 Ping 时确定。
Fennec.settings_general.homepage.custom_homepage¶
如果主页未设置为默认的 about:home,则将 custom_homepage 字段设置为 true。该值在发送核心 Ping 时确定。
Fennec.settings_general.homepage.custom_homepage_use_for_newtab¶
如果“设置/常规/主页/也用于新标签页”设置已启用,则将 custom_homepage_use_for_newtab 字段设置为 true。该值在发送核心 Ping 时确定。
Fennec.settings_general.homepage.topsites_enabled¶
如果“设置/常规/主页/热门网站”设置设置为“显示”,则 topsites_enabled 设置为 true。该值在发送核心 Ping 时确定。
Fennec.settings_general.homepage.pocket_enabled¶
如果“设置/常规/主页/热门网站/Pocket 推荐”设置已启用,则 pocket_enabled 设置为 true。该值在发送核心 Ping 时确定。
Fennec.settings_general.homepage.recent_bookmarks_enabled¶
如果启用了“设置/常规/主页/热门网站/其他内容/最近书签”设置,则 recent_bookmarks_enabled 设置为 true。该值在发送核心 Ping 时确定。
Fennec.settings_general.homepage.visited_enabled¶
如果启用了“设置/常规/主页/热门网站/其他内容/已访问”设置,则 visited_enabled 设置为 true。该值在发送核心 Ping 时确定。
Fennec.settings_general.homepage.bookmarks_enabled¶
如果“设置/常规/主页/书签”设置为“显示”,则 bookmarks_enabled 设置为 true。该值在发送核心 Ping 时确定。
Fennec.settings_general.homepage.history_enabled¶
如果“设置/常规/主页/历史记录”设置为“显示”,则 history_enabled 设置为 true。该值在发送核心 Ping 时确定。
Fennec.settings_privacy.do_not_track¶
如果启用了“设置/隐私/请勿跟踪”,则 do_not_track 设置为 true。该值在发送核心 Ping 时确定。
Fennec.settings_privacy.master_password¶
如果启用了“设置/隐私/使用主密码”,则 master_password 设置为 true。该值在发送核心 Ping 时确定。
Fennec.settings_privacy.master_password_usage_count¶
master_password_usage_count 字段包含用户自上次发送核心 Ping 以来输入主密码的次数。此计数器在发送核心 Ping 后重置。
Fennec.settings_notifications.product_feature_tips¶
如果启用了“设置/通知/产品和功能提示”设置,则 product_feature_tips 设置为 true。该值在发送核心 Ping 时确定。
fennec.page_options.save_as_pdf¶
save_as_pdf 字段包含用户自上次发送核心 Ping 以来使用“页面/保存为 PDF”功能的次数。此计数器在发送核心 Ping 后重置。
fennec.page_options.print¶
print 字段包含用户自上次发送核心 Ping 以来使用“页面/打印”功能的次数。此计数器在发送核心 Ping 后重置。
fennec.page_options.total_added_search_engines¶
total_added_search_engines 是一个绝对值,包含用户手动添加的搜索引擎数量。该值在发送核心 Ping 时确定,并且永远不会重置为零。
fennec.page_options.total_sites_pinned_to_topsites¶
total_sites_pinned_to_topsites 是一个绝对值,包含用户已固定到热门网站的网站数量。该值在发送核心 Ping 时确定,并且永远不会重置为零。
fennec.page_options.view_source¶
view_source 字段包含用户自上次发送核心 Ping 以来使用“页面/查看页面源代码”功能的次数。此计数器在发送核心 Ping 后重置。
Fennec.page_options.bookmark_with_star¶
bookmark_with_star 字段包含用户自上次发送核心 Ping 以来使用“菜单 / <星号>”功能的次数。此计数器在发送核心 Ping 后重置。
Fennec.page_options.current_pwas_count¶
current_pwas_count 字段包含此应用程序当前安装的 PWA 数量。由于仅在 Android >= 25 上提供用于查询此内容的 Android API,因此对于较低版本的 Android,此键的值将为“-1”。该值在发送核心 Ping 时确定。
Fennec.sync.only_over_wifi¶
如果启用了“设置/同步/仅通过 Wi-Fi 同步”设置,则 only_over_wifi 设置为 true。该值在发送核心 Ping 时确定。如果用户未登录同步,则此值设置为 null。该值在发送核心 Ping 时确定。
其他参数¶
HTTP“日期”标头¶
此标头用于跟踪核心 Ping 的提交日期,格式由 rfc 2616 sec 14.18 等指定(例如,“Tue, 01 Feb 2011 14:00:00 GMT”)。
版本历史¶
v10:添加了
bug_1501329_affected
v9
2017 年 4 月:将
arch
更改为包含设备架构,而不是我们构建的架构,以及accessibilityServices
2017 年 12 月:添加了
defaultBrowser
以了解用户是否已将 Firefox 设置为默认浏览器(2017 年 12 月)2018 年 5 月:添加了(可选)
displayVersion
以轻松区分 Firefox 测试版
v8:添加了
flashUsage
v7:添加了
sessionCount
和sessionDuration
以及campaignId
v6:添加了
searches
v5:添加了
created
和tz
v4:当 times.json 不可用时,
profileDate
将返回软件包安装时间v3:添加了
defaultSearch
v2:添加了
distributionId
v1:初始版本 - 发布在 Fennec 45 中。
注释¶
distributionId
(v2) 实际上在profileDate
(v4) 之后发布,但已提升到 46,而profileDate
发布在 47 上。代码中的版本号已更新为递增 (bug 1264492),并且版本历史记录文档也相应地重新排列。
Android 实现注释¶
在 Android 上,上传器很有可能为给定客户端提供完整数据,但并非 100% 概率。这是一个有意识的决定,是为了使代码更简单。我们可以丢失数据的案例
重置字段测量值(包括递增序列号)和存储要上传的 Ping 不是原子的。Android 可以在这些不同的操作之间终止我们的进程以释放内存压力,因此我们可能会丢失一个 Ping 的数据。该序列号将在服务器上丢失。
如果我们超过磁盘上尚未上传的 Ping 的某个数量,我们将删除旧的 Ping 以节省存储空间。对于这些 Ping,我们将丢失其数据,并且其序列号将在服务器上丢失。
注意:我们绝不希望在不丢失序列号的情况下丢失数据,因此我们能够确定何时发生数据丢失。