LibNotify의 경우, 설치하는 JSON 파일의 확장자 ID가 올바르지 않습니다. 확장 ID를 올바른 것으로 업데이트하면 수정됩니다.
로 이동 .config/google-chrome/NativeMessagingHosts
(구글 크롬) 또는 .config/chromium/NativeMessagingHosts
(크롬). 폴더에서 JSON 파일을 열고 allowed_origins
섹션에서 확장 ID가 허용되는지 확인하십시오 gphchdpdmccpjmpiilaabhpdfogeiphf
. 그러나 확장 ID (적어도 내 경우에는 모든 사람에게 동일해야 함)는 실제로 epckjefillidgmfmclhcbaembhpdeijg
입니다.
이 문제를 해결하려면 잘못된 확장 ID를 올바른 확장 ID로 바꾸거나 그 뒤에 쉼표와 올바른 확장 ID를 추가하십시오. 개인적으로 후자의 옵션을 선택했으며 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/"
]
}
편집 : 변경해야 할 유일한 것은 아닙니다. 확장 프로그램은 Chrome (ium) 및 HTML5 알림을 선호하는 다른 브라우저에서 더 이상 사용되지 않고 제거 된 웹킷 알림을 사용합니다. 따라서 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
.