2017-09-05 20 views
1

私はMPA(複数ページアプリケーション)を持っています。 AndroidおよびiOS向けに公開されました。ユーザーが別のページ(ビュー)にナビゲートしたいときにページを単に変更します。すべてのことがうまくいきます。いくつかのバックエンド同期機能を実装したいと思います。問題は、私はバックグラウンドでAjaxリクエストを黙って行い、ユーザーはいつでもページを変更できるため、同期されたデータの追跡に非常に重要なAjax呼び出しの参照を失う可能性があります。複数のhtmlページでのHTTPリクエスト処理アプリケーションコードバー

ネイティブコードレベルなどでhttpリクエストを行うプラグインはありますか?

答えて

0

cordova-plugin-httpを見ると、バックグラウンドスレッドですべてのHTTP要求を実行するネイティブプラグインです。

インストール:

cordova plugin add cordova-plugin-http 

例POSTリクエスト:

cordovaHTTP.post("https://google.com/", { 
    id: 12, 
    message: "test" 
}, { Authorization: "OAuth2: token" }, function(response) { 
    // prints 200 
    console.log(response.status); 
    try { 
    response.data = JSON.parse(response.data); 
    // prints test 
    console.log(response.data.message); 
    } catch(e) { 
    console.error("JSON parsing error"); 
    } 
    }, function(response) { 
    // prints 403 
    console.log(response.status); 

    //prints Permission denied 
    console.log(response.error); 
    }); 
+0

返されたデータのタックを保持する方法がページによって変更される場合があります。 つまりページ1はhttpリクエストを送信し、回答が得られる前にページ2に移動するにはどうすればよいのですか? –

+0

応答をコールバック関数に保存することができます。ローカルストレージに保存し、他のページにアクセスします。 – David

+0

あなたは間違っています。私は電話の応答を待つことができません。 アプリケーションは1ページ目にリクエストを送信し、2ページ目に移動します。ユーザーはAjaxコールが行われているかどうかわかりません。 2ページで回答を受け取ることはできますか? –

0

これを行うにはOOBの方法はありません。 Cordova HTTPプラグインのようなものを使ってHTTPリクエストをネイティブ側に移動することができます。これは複数のページにわたって実行され続けますが、ユーザーが別のページに移動した場合に応答が返ってくると、ページ。

処理が本当にすべてバックグラウンドで、JavaScriptの後処理が本当に必要ない場合は、基本的にバックグラウンドでGETリクエストを実行し、結果を保存するようにしてみてください。cordova-plugin-background-downloadそれ。 GETだけをサポートしていますが、アプリ全体がバックグラウンドに置かれていても動作します。

ポスト処理または非GET要求が必要な場合は、プラグインのネイティブコードでロジックを実装することを検討できます(おそらく実際のネットワークマーシャリングに役立つCordovaのHTTPプラグインの1つを使用します)。

コルドバがサービス雇用者のようなものをサポートすることができたら、私はそれを見てきました。 iOS用の古い実装がありますが、それ以上は機能しないようです(大幅な変更なしでは実際には動作しないかもしれません):cordova-plugin-serviceworker

もう1つのオプションは、アプリを疑似SPAにすることです(iframe)。 iframeにご依頼と処理を依頼し、必要に応じてコンテンツiframeとのやりとりを作成してください。しかしそれは自明ではない。

関連する問題