在不打开扩展弹出窗口的情况下显示来自 Socket.io 服务器的 Chrome 扩展通知

问题描述 投票:0回答:1

我有一个使用 React.js 构建的 Chrome 扩展,它与 Socket.io 服务器通信以接收通知。即使扩展弹出窗口关闭,我也想向用户显示这些通知。我尝试过使用

chrome.notifications
,但它似乎只有在扩展弹出窗口打开时才有效。有没有办法实现 Chrome 扩展程序通知,无论扩展程序弹出窗口是否打开,该通知都可以独立工作?请注意,我无法更改扩展程序的现有文件夹结构。任何见解或解决方案将不胜感激。

文件夹结构:

-公共
--manifest.json-src
--popup.js
--background.js

我正在寻求帮助,让 Chrome 扩展程序通知即使在扩展程序弹出窗口关闭时也能正常工作,并且我需要一个适合我当前文件夹结构和技术堆栈的解决方案。

reactjs google-chrome-extension websocket notifications popup
1个回答
0
投票

实现此目的的一种方法是让后台工作程序以特定的时间间隔自动唤醒并处理与 Socket Server 的连接。

这可以通过内置的 chrome.alarms API 来完成:https://developer.chrome.com/docs/extensions/reference/api/alarms

(您需要将警报添加到manifest.js文件中的权限列表中)

permissions:[
    "notifications",
    "alarms"
]

例如,在您的background.js中,您可以添加如下内容:

chrome.alarms.create("notificationHandler", {
    // This will serve as a recurrent check for Notifications
    delayInMinutes: DELAY_FOR_FIRST_RUN, 
    periodInMinutes: PERIOD_AT_WHICH_TO_RUN
});
chrome.alarms.onAlarm.addListener(function(alarm) {
    if (alarm.name === "notificationHandler") {
        // CHECK FOR NOTIFICATIONS HERE 
        // Trigger the logic to display the notifications if 
        // the Socket.io server responds with a notification request
    }
});

这将确保您的后台工作人员(独立于弹出窗口)不断检查来自服务器的通知,因为它会在收到各种警报时唤醒。

© www.soinside.com 2019 - 2024. All rights reserved.