LibNotify के लिए, JSON फ़ाइल जो इसे स्थापित करती है, उसमें गलत एक्सटेंशन आईडी है। एक्सटेंशन आईडी को सही पर अपडेट करके उसे ठीक करता है।
पर जाएं .config/google-chrome/NativeMessagingHosts
(गूगल क्रोम के लिए) या .config/chromium/NativeMessagingHosts
(क्रोमियम के लिए)। फ़ोल्डर में JSON फ़ाइल खोलें, और ध्यान दें कि allowed_origins
अनुभाग में, यह एक्सटेंशन आईडी की अनुमति देता है gphchdpdmccpjmpiilaabhpdfogeiphf
। हालांकि, विस्तार आईडी (कम से कम मेरे मामले में, लेकिन यह सभी के लिए समान होना चाहिए) वास्तव में है epckjefillidgmfmclhcbaembhpdeijg
।
इसे ठीक करने के लिए, या तो गलत एक्सटेंशन आईडी को सही के साथ बदलें, या इसके बाद अल्पविराम और सही एक्सटेंशन आईडी जोड़ें। मैंने व्यक्तिगत रूप से बाद वाला विकल्प चुना, और यहाँ पर मेरी JSON फाइल कैसी दिखती है:
{
"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/"
]
}
संपादित करें: यह एकमात्र परिवर्तन नहीं है जिसे बनाने की आवश्यकता है। यह एक्सटेंशन वेबकिट सूचनाओं पर निर्भर करता है, जिन्हें क्रोम (ium) में हटा दिया गया था और HTML ब्राउज़र सूचनाओं के पक्ष में अन्य ब्राउज़र की संभावना थी। इसलिए, google-chrome/default/Extensions/epckjefillidgmfmclhcbaembhpdeijg/1.0_0/notify_hook.js
अद्यतन करने की आवश्यकता है। मैंने इसके लिए एक लघु स्क्रिप्ट लिखी है, लेकिन यह अधिसूचना को प्रदर्शित करने के अलावा अधिकांश मानक को तोड़ता है। निम्नलिखित के साथ फ़ाइल में सब कुछ बदलें (अभी भी उपयोग करने वाली साइटों के लिए मूल समर्थन जोड़ा गया है window.webkitNotifications
और (उम्मीद है कि बेहतर छवि समर्थन)) (अनुमतियाँ समर्थन जोड़ा गया):
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
।