2013-04-02 13 views
11

クロムパッケージのアプリケーションを展開し、クロムウェブストアにアップデートを公開すると、ユーザーは自動的にアプリケーションのアップデートを受け取ることができます。実行中のアプリケーションが最新のものであるかどうかを知り、それを更新したい場合があります。 E.G .:クロームアプリをできるだけ早く更新させるにはどうすればいいですか?

  • ユーザーを最新のバージョンに保つだけです。
  • アプリケーションとサーバー側APIの不一致を検出し、新しいサーバー側APIを使用するためにクライアント側アプリケーションを更新する必要があります。 chrome.runtime.requestUpdateCheck()ため

ドキュメントは"throttled""no_update""update_available"の状況を提供していますが、新しいバージョンが必要な場合はどうするかを示すものではありません。

答えて

20

chrome.runtime.onUpdateAvailableのリスナーをインストールします。このリスナーは、新しい.crxファイルがダウンロードされ、新しいバージョンがインストールされる準備が整うと起動します。その後、chrome.runtime.requestUpdateCheckを呼び出す:

chrome.runtime.onUpdateAvailable.addListener(function(details) { 
    console.log("updating to version " + details.version); 
    chrome.runtime.reload(); 
}); 

chrome.runtime.requestUpdateCheck(function(status) { 
    if (status == "update_available") { 
    console.log("update pending..."); 
    } else if (status == "no_update") { 
    console.log("no update found"); 
    } else if (status == "throttled") { 
    console.log("Oops, I'm asking too frequently - I need to back off."); 
    } 
}); 
+1

'文書throttled'される場合chrome.runtime.restart()またはchrome.runtime.restart()を呼び出したいこと?それはどういう意味が分かりますか? – cprcrack

+1

「調整済み」ステータスは、http://developer.chrome.com/apps/runtime.html#method-requestUpdateCheckで返される可能性のある値と同様に記載されています。これは単にあなたが頻繁に尋ねてきたことを意味し、ネットワークのフェッチを実際に行って更新があるかどうかを調べるのではなく、クロムがリクエストを絞っているため、再度尋ねるまで数分待たなければなりません。あなたがどれくらい待たなければならないかの兆候が戻ってきたら、それが役に立つと思います。 –

+2

'chrome.runtime.requestUpdateCheck(...)'呼び出しを、15分、30分、さらには1時間ごとにのみ呼び出されるように調整したif文でラップするのは価値がありますか?私はこれをpopup.htmlに入れたいですが、それは高価な操作だと思います。 – benmccallum

-5

私は力の更新を伴うの知っている、おそらく最良の方法:

setInterval(function() { 

    chrome.runtime.requestUpdateCheck(function(status) { 

    if(status == 'update_available') { 

     chrome.runtime.reload(); 

    } 

    }); 

}, 100); 

これは、基本的にアプリ(または拡張子)を強制的に更新のために第二の10回に1回を確認してください。クライアントのコピーが迅速に更新されるようにします。アプリケーションによっては

+3

しないでください!それはCPU時間(およびラップトップでの潜在的なバッテリ電力)を無駄にし、一般に、アプリが実際に更新されているわずかな数のケースでユーザのブラウジングエクスペリエンスを常に低下させます。 –

0

、更新が検出されたとき、あなたはsetTimeoutのようなものを使用し、後で

+0

'restart()'はキオスクモードでのみ利用可能です。 https://developer.chrome.com/extensions/runtime#method-restart – Pier

関連する問題