2013-01-08 8 views
40

私は、完全にバックグラウンドで作業していることを意味しています。画面がシャットダウンされていても、アプリが起動していて、音とともに通知を送信できます。アプリをphonegapできるのはバックグラウンドですか?

私のアプリは価格の変化を監視するために使用されます。価格が変わると、警告音が鳴ります。

答えははいかいいえですか?ありがとう。ここで

+0

このプラグインもお試しください - https://github.com/katzer/cordova-plugin-background-mode –

答えて

47
+0

wait 3つのリンクすべてがAndroidに解決策を提供します。 iOSやBlackberry OSなど、PhoneGapでサポートされている他のモバイルオペレーティングシステムはどうですか? – Raptor

+1

@ Shivan Raptor:答えにある更新のリンクを見てください。 –

+18

リンクは良い答えではありません。あなたはリンクのwhatsの簡単な要約を投稿する必要があります。 – brainray

28

iOSの7との別の可能な解決策が来たので、私はつもりのiOS 7、さらにユーザのための追加的な答えを提供しています。

新しいBackground Fetch機能を使用すると、バックグラウンドにあるアプリのコンテンツを定期的に更新することができます。フェッチの時間間隔はユーザーが設定することはできませんが、ユーザーの統計情報(アプリの使用状況など)に基づいてiOSによって設定されます。

この新しい機能は、プラグイン経由でPhoneGap/Cordovaでアクセスできます。幸いなことに、このアクセスを提供しているのはすでにbeen developed a pluginです。あなたはiOS's local notificationsへのアクセスを提供するプラグインと連携して

cordova plugin add https://github.com/christocracy/cordova-plugin-background-fetch.git 

して、コルドバプロジェクトにそれをインストールすることができます 、これは驚異を働かせます。このようなプラグインも開発されており、例えばthis oneです。 背景活動を実行するために、これらのプラグインは、今、あなたのjavascriptのコードで組み合わせることができる

cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git 

して、コルドバプロジェクトにそれをインストールします。

function onDeviceReady() { 
    var Fetcher = window.plugins.backgroundFetch; 

    // Your background-fetch handler. 
    var fetchCallback = function() { 
     console.log('BackgroundFetch initiated'); 

     // perform your ajax request to server here 
     $.get({ 
      url: '/heartbeat.json', 
      callback: function(response) { 
       // process your response and whatnot. 

       window.plugin.notification.local.add({ message: 'Just fetched!' }); //local notification 
       Fetcher.finish(); // <-- N.B. You MUST called #finish so that native-side can signal completion of the background-thread to the os. 
      } 
     }); 
    } 
    Fetcher.configure(fetchCallback); 
} 

このフェッチプラグインは、取り込み区間についてUIApplicationBackgroundFetchIntervalMinimum値を使用していますこれにより、フェッチの周期性が最も速くなります。

+4

Androidについてはどうですか?なぜ、ほとんどのプラグインが、メインの3つのプラットフォームの代わりに単一のプラットフォームのために書かれているのですか? – andreszs

+0

@Andrewあなたの質問に対する答えは、それぞれのプラットフォームが全く異なる方法でバックグラウンドプロセスを処理し、単一のプラグインを作成することはむしろ面倒であり、幅広い知識を必要とすることだと思います。私はそれが来ると確信している、私はそれも欲しい! –

+0

Androidのユーザーは[このプラグイン](https://github.com/katzer/cordova-plugin-background-mode)を使用する必要があります。私はiOS上でそれを使用すると、ジオロケーションなどで使用していないと、レビュープロセスでアプリが却下される可能性があると聞きました。 – Clawish

0

ios 7 +用のコードバを作成し、ジェネリックコードからxcodeに抜け出す準備ができている場合は、iosビルドの.plistファイルに「必要なバックグラウンドモード」を追加して上書きしません新しいビルドによって。

私は「ネットワークからのアプリケーションのダウンロードコンテンツ」オプションを選択しました

あなたがしなければならないことは、あなたのアプリが数分ごとに外部の世界をポークすることです(私はfirebaseを使用していますので、 。

私はまだアプリケーションストアに提出していませんが、要求があまり頻繁ではない場合、どのように失敗するのか分かりません(アプリが停止する前にバックグラウンドで約10分あります)アプリのニーズは、バックグラウンドで/安静時には厄介ではありません。

これにより、この問題の解決がコード内で数行にまで短縮されます。

関連する問題