Har*_*ang 5 google-chrome google-chrome-extension
我知道对于网上商店中托管的扩展程序,当我推送更新时,Google会自动更新用户的扩展程序,但会有时滞(几个小时)。
扩展是否有办法检测是否有尚未应用的新更新?最简单的方法是以某种方式在网上商店中查询当前版本,并将其与已安装的版本进行比较,我想知道API中是否有与此相关的任何内容。
我知道chrome.app.getDetails()。version提供了当前安装的版本,但是有没有办法获取当前的网上商店版本?谢谢。
在最坏的情况下,我可以为扩展程序网上商店页面发布一个http get并从那里提取版本,但这似乎是超级hacky,所以我不希望这样做。
另一种方法是使用chrome.runtime.onUpdateAvailable.addListener.
文档chrome.runtime.requestUpdateCheck指出不应使用此方法,因为 Google Chrome 会手动检查更新并安装更新(如果有)。通常 Google Chrome 每 5 小时检查一次更新。如果您的后台页面不是持久性的,则 Google Chrome 会在后台页面卸载时自动安装该扩展程序,否则仅在 Google Chrome 重新启动时安装。
chrome.runtime.onUpdateAvailable.addListener是一个事件侦听器,“当更新可用时触发,但不会立即安装,因为应用程序当前正在运行”。“应用程序当前正在运行”意味着后台页面“持久”或仍在运行,某些内容或后台脚本仍在运行等。
您可以chrome.runtime.reload在chrome.runtime.onUpdateAvailable.addListener发生火灾时手动调用,但这不是最好的方法。您应该 100% 确定它不会破坏应用程序进程,并且用户不会丢失一些敏感信息。最好通知用户(用alert或chrome.notifications)。
// background.js
chrome.runtime.onUpdateAvailable.addListener((details) => {
if (details) {
// if you 100% sure about this.
// chrome.runtime.reload();
// too distract.
// alert(`New version (${details.version}) is available. Restart the browser to update.`);
// requires `notifications` permission.
// chrome.notifications.create({
// type: "basic",
// iconUrl: chrome.extension.getURL("logo-48.png"),
// title: "Update available",
// message: `New version (${details.version}) is available. Restart the browser to update.`
// });
}
});
Run Code Online (Sandbox Code Playgroud)
然而,这都不是最好的方法,因为我们应该依赖(并尝试不做持久化后台页面,因为它破坏了更新过程)Google Chrome 的自动更新过程,并且不做任何额外的工作。
您错过了它,它在chrome.runtimeAPI中:
chrome.runtime.requestUpdateCheck(function callback)要求对此应用程序/扩展名进行更新检查。
请注意,服务器可能会限制您的请求。您应该在回调中检查其响应,并在发生这种情况时减少请求频率。
如果您想对此更加主动,则可以为更新检查实现推送通知。但是,这可能是过大的考虑-考虑到Web Store对更新进行自动检查,这些更新在发布后至少可持续一个小时。
| 归档时间: |
|
| 查看次数: |
904 次 |
| 最近记录: |