Bei LibNotify hat die installierte JSON-Datei die falsche Erweiterungs-ID. Durch Aktualisieren der Erweiterungs-ID auf die richtige wird das Problem behoben.
Gehen Sie zu .config/google-chrome/NativeMessagingHosts
(für Google Chrome) oder .config/chromium/NativeMessagingHosts
(für Chromium). Öffnen Sie die JSON-Datei im Ordner und beachten Sie, dass im allowed_origins
Abschnitt die Erweiterungs-ID zulässig ist gphchdpdmccpjmpiilaabhpdfogeiphf
. Die Erweiterungs-ID (zumindest in meinem Fall, sollte aber für alle gleich sein) ist jedoch tatsächlich epckjefillidgmfmclhcbaembhpdeijg
.
Um dies zu beheben, ersetzen Sie entweder die falsche Erweiterungs-ID durch die richtige oder fügen Sie danach ein Komma und die richtige Erweiterungs-ID hinzu. Ich persönlich habe mich für die letztere Option entschieden und meine JSON-Datei sieht folgendermaßen aus:
{
"name": "com.initiated.chrome_libnotify_notifications",
"description": "Libnotify Notifications in Chrome",
"path": path to the location of install.sh,
"type": "stdio",
"allowed_origins": [
"chrome-extension://gphchdpdmccpjmpiilaabhpdfogeiphf/",
"chrome-extension://epckjefillidgmfmclhcbaembhpdeijg/"
]
}
EDIT: Das ist nicht die einzige Änderung, die vorgenommen werden muss. Die Erweiterung basiert auf Webkit-Benachrichtigungen, die in Chrome (ium) und wahrscheinlich anderen Browsern zugunsten von HTML5-Benachrichtigungen veraltet und entfernt wurden. Muss google-chrome/default/Extensions/epckjefillidgmfmclhcbaembhpdeijg/1.0_0/notify_hook.js
daher aktualisiert werden. Ich habe ein kurzes Skript dafür geschrieben, aber es bricht den größten Teil des Standards, außer dass die Benachrichtigung angezeigt wird. Ersetzen Sie alles in der Datei durch Folgendes (grundlegende Unterstützung für Websites, die noch verwendet werden, window.webkitNotifications
und (hoffentlich) verbesserte Bildunterstützung hinzugefügt) (Unterstützung für Berechtigungen hinzugefügt):
OriginalNotification = Notification
Notification = function(title, properties) {
if (Notification.permission != "granted") {
if (this.onError) {
this.onError();
}
return;
}
if (!properties.hasOwnProperty("body")) {
properties["body"] = "";
}
if (!properties.hasOwnProperty("icon")) {
properties["icon"] = "";
}
if (properties["icon"]) {
properties["icon"] = getBaseURL() + properties["icon"];
}
document.getElementById('libnotify-notifications-transfer-dom-area').innerText = JSON.stringify({title:title, body:properties["body"], iconUrl:properties["icon"]});
var event = document.createEvent("UIEvents");
event.initUIEvent("change", true, true);
document.getElementById('libnotify-notifications-transfer-dom-area').dispatchEvent(event);
if (this.onShow) {
this.onShow();
}
};
Object.defineProperty(Notification, "permission", {
get: function() {
return OriginalNotification.permission;
},
set: undefined
});
Notification.requestPermission = function(callback) {
OriginalNotification.requestPermission(callback);
}
window.webkitNotifications = {}
window.webkitNotifications.checkPermission = function() {
return 0;
}
window.webkitNotifications.createNotification = function(image, title, body) {
if (image) {
image = getBaseURL() + image;
}
document.getElementById('libnotify-notifications-transfer-dom-area').innerText = JSON.stringify({title:title, body:body, iconUrl:image});
var event = document.createEvent("UIEvents");
event.initUIEvent("change", true, true);
document.getElementById('libnotify-notifications-transfer-dom-area').dispatchEvent(event);
}
function getBaseURL() {
return location.protocol + "//" + location.hostname +
(location.port && ":" + location.port) + "/";
}
chrome://flags/#enable-native-notifications
.