Chromeネイティブ通知を有効にする


11

UbuntuでGoogle Chrome(またはChromium)を使用してネイティブ通知を機能させようとしていますが、これまでのところ運はありません。

私がすでに試したこと:

また、別の拡張機能も試したことがありますが、その名前は覚えていません。

それらのどれも動作しません。Chrome自体の通常の通知を引き続き受け取ります。

Ubuntu 14.04 x64でGoogle Chrome 34.0.1847.137を使用しています。

誰かがこれを機能させる方法を教えてもらえますか?


1
Google Chrome Stableの最新バージョン(現在の59)は、ネイティブ通知を有効にするフラグをサポートしています。これは、Gnomeシェルで完全に機能します。から入手できますchrome://flags/#enable-native-notifications
emi

回答:


10

LibNotifyの場合、インストールするJSONファイルの拡張子IDが正しくありません。拡張IDを正しいものに更新すると、修正されます。

移動します.config/google-chrome/NativeMessagingHosts(Google Chromeの場合)または.config/chromium/NativeMessagingHosts(クロム用)。フォルダ内のJSONファイルを開き、allowed_originsセクションで拡張IDが許可されていることに注意してくださいgphchdpdmccpjmpiilaabhpdfogeiphf。ただし、拡張機能ID(少なくとも私の場合は、すべてのユーザーで同じである必要があります)は実際にはepckjefillidgmfmclhcbaembhpdeijgです。

これを修正するには、誤った拡張子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/"
  ]
}

編集:それが行われる必要がある唯一の変更ではありません。この拡張機能はWebkit通知に依存しています。Webkit通知は、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) + "/";
}

1
動作しており、CPU使用率はそれ自体で解決したようです。ただし、必要なアプリケーション(Webogram)ではまだ動作しません。しかし、あなたの答えと努力に感謝します。Chromeがネイティブ通知をサポートするのを待っています!
ルイ・マッタイッセン

クローム35でデフォルトで動作する、以下の私のコメントを参照してください
Konstigt

@Konstigt:通知が機能していなかったわけではありません。通知はネイティブのLinux通知ではなく、既存のソリューション(少なくとも上記の最初の2つのリンク)は非推奨の方法を使用していました。(私は個人的にChrome(ium)を非難しません。)
saiarcot895

.config/chromium/NativeMessagingHostsフォルダーがありません。
umpirsky 14年

3
男、あなたは本当にあなた自身のプラグインを書いてGoogleストアに投稿すべきです。あなたが登録のために5ドルを払うことに熱心でなければ、私はあなたのためにそれをすることができます。
ブワジェミッチャリク

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.