Chrome yerel bildirimlerini etkinleştirme


11

Ubuntu'da Google Chrome (veya Chromium) kullanarak çalışmak için yerel bildirimler almaya çalışıyorum, ancak şimdiye kadar şans yok.

Denediğim şeyler:

Ve başka bir uzantı denediğimi hatırlıyorum ama adını hatırlamıyorum.

Hiçbiri çalışmıyor. Chrome'un normal bildirimlerini almaya devam ediyorum.

Ubuntu 14.04 x64 üzerinde Google Chrome 34.0.1847.137 kullanıyorum.

Birisi bana bunun nasıl çalışacağını söyleyebilir mi?


1
Google Chrome Stable'ın (şu an 59 gibi) en son sürümü, Gnome Shell'de mükemmel şekilde çalışan Yerel Bildirimleri Etkinleştir bayrağını desteklemektedir. Üzerinden ulaşılabilir chrome://flags/#enable-native-notifications.
emi

Yanıtlar:


10

LibNotify için, yüklediği JSON dosyası yanlış uzantı kimliğine sahip. Uzantı kimliğini doğru olana güncellemek sorunu düzeltir.

.config/google-chrome/NativeMessagingHosts(Google Chrome için) veya .config/chromium/NativeMessagingHosts(Chromium için ) adresine gidin . JSON dosyasını klasörde açın ve allowed_originsbölümde uzantı kimliğine izin verdiğine dikkat edin gphchdpdmccpjmpiilaabhpdfogeiphf. Ancak, uzantı kimliği (en azından benim durumumda, ancak herkes için aynı olmalı) aslında epckjefillidgmfmclhcbaembhpdeijg.

Bunu düzeltmek için, yanlış uzantı kimliğini doğru olanla değiştirin veya arkasından virgül ve doğru uzantı kimliği ekleyin. Şahsen ikinci seçeneği seçtim ve işte JSON dosyam şöyle görünüyor:

{
  "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: Yapılması gereken tek değişiklik bu değil. Uzantı, Chrome (ium) ve muhtemelen diğer tarayıcılarda HTML5 bildirimleri lehine kaldırılan ve kaldırılan Webkit bildirimlerine dayanmaktadır. Bu nedenle, google-chrome/default/Extensions/epckjefillidgmfmclhcbaembhpdeijg/1.0_0/notify_hook.jsgüncellenmesi gerekiyor. Bunun için kısa bir senaryo yazdım, ancak bildirimi görüntülemek dışında standardın çoğunu bozuyor. Dosyadaki her şeyi aşağıdakilerle değiştirin (halen kullanılan siteler için temel destek eklendi window.webkitNotificationsve (umarım) geliştirilmiş görüntü desteği) (izin desteği eklendi):

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) + "/";
}

1
Çalışıyor ve CPU kullanımı kendini çözmüş görünüyor. Ancak, istediğim uygulamada hala çalışmıyor ( Webogram ). Ancak yanıtınız ve çabanız için çok teşekkür ederiz. Chrome'un yerel bildirimleri desteklemesini bekleyeceğim!
Louis Matthijssen

Lütfen aşağıdaki
yorumuma

@Konstigt: Bildirimlerin işe yaramadığı değil; bildirimlerin yerel Linux bildirimleri olmaması ve mevcut çözümlerin (en azından yukarıdaki ilk iki bağlantı) kullanımdan kaldırılmış yöntemi kullanmasıdır. (Ben şahsen bunun için Chrome'u (
ium

.config/chromium/NativeMessagingHostsKlasörüm yok .
umpirsky

3
Dostum, gerçekten kendi eklentinizi yazmalı ve Google Store'a göndermelisiniz. Kayıt için 5 $ ödemek için istekli değilseniz, o zaman sizin için yapabilirim.
Błażej Michalik

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.