40

つまり、完全にバックグラウンドで動作しています。たとえば、画面がシャットダウンされていても、アプリは実行されており、音声で通知を送信できます。

私のアプリは価格変動を監視するために使用されます。価格が変わると音でアラートが鳴ります。

だから、答えはイエスかノーか?ありがとう。

4

3 に答える 3

47

これであなたを助けることができるいくつかのリンクがあります

リンク1:同様のSO質問

リンク2:Red-Folderブログ

リンク3:GitHubのBackgroundServiceプラグイン

アップデート

リンク4:iOS4のPhonegapバックグラウンドサービス

リンク5:iOS5のphonegapバックグラウンドサービス

于 2013-01-08T08:36:37.567 に答える
29

iOS 7で別の可能な解決策が出てきたので、iOS7以降のユーザーに追加の回答を提供します。

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

この新機能には、プラグインを介してPhoneGap / Cordovaでアクセスできます。幸い、このアクセスを提供するプラグインがすでに開発されています。あなたはそれをあなたのCordovaプロジェクトにインストールすることができます

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

iOSのローカル通知へのアクセスを提供するプラグインと組み合わせて、これは驚異的に機能します。このようなプラグインも開発されています。たとえば、このプラグインです。によってCordovaプロジェクトにインストールします

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

これらのプラグインをJavaScriptコードで組み合わせて、バックグラウンドアクティビティを実行できるようになりました。

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フェッチ間隔の値を使用しているため、フェッチの周期性が可能な限り速くなります。

于 2014-05-22T15:10:47.700 に答える
0

ios 7 +用のcordovaをビルドしていて、汎用コードからxcodeにステップアウトする準備ができている場合は、「必要なバックグラウンドモード」をiosビルドの.plistファイルに追加でき、新しいビルドによって上書きされることはありません。 。

たとえば、[アプリがネットワークからコンテンツをダウンロードする]オプションを選択しました

次に行う必要があるのは、アプリが数分ごとに外の世界を突くようにすることです(Firebaseを使用しているので、ダミーノードの値を取得します)。

私はまだアプリストアに送信していませんが、リクエストがあまり頻繁でない場合(アプリが一時停止されるまでにバックグラウンドで約10分あることを理解しています)、アプリがバックグラウンドで必要とするリソースがどのように失敗するかわかりません/安静時は面倒ではありません。

これにより、この問題の解決策がコードの数行になります。

于 2016-04-26T14:32:29.630 に答える