2017-10-17 6 views
0

Swiftで書かれたアプリを持っていて、サーバに統計をアップロードしています。私の質問は単純で、次のようになります。統計をアップロードするのに最適な時期はいつですか?アプリが終了する前にアプリデータを保存するiOS

私が思い描いたアプローチの1つは、アプリケーションが終了するとすべての統計をローカルに保存することでした。また、今後アプリが開くと、保存した統計情報をアップロードしてクリアします。

問題は、applicationWillTerminateが呼び出されないことがあり、データがアップロードされずに失われることがあることです。

私の問題を解決する最良の方法は何ですか?

ありがとうございました。

+0

usage-analyticsのコードはありますか? firebase-analyticsを使ってみませんか? – AlexWoe89

+0

@ AlexWoe89私は自分のアプリから特定のサーバーにそれらを送信するためにアナリティクスを入手する必要がありました。もし私がfirebaseを使用することができれば私はしただろう。 – krypton36

+0

統計が更新されると、リアルタイムでサーバーに統計をアップロードする必要があります。 – Zee

答えて

0

データが生成されるたびに、ローカルにを保存します。アプリが起動したら、それを送信してローカルキャッシュをクリアします。 application:didFinishLaunchingWithOptions:を使用してを検出することができます。

情報を一度に保存するのではなく、定期的に安全に保管する必要がある場合は、キャッシュすることをお勧めします。

+0

すぐにデータを保存するか、アプリが終了したら保存しますか? – krypton36

+0

アプリが終了するまで待つと、あなたの情報が危険にさらされます(アプリが何らかの理由でいつでも終了する場合)。だから、UIブロックを避けるためにバックグラウンドスレッドで生成されたときに即座に保存します。その後、あなたがあなたのアプリをもう一度起動するか、適切なものが見つかるたびにそれをサーバーに送ります。ユーザーはアプリを再起動しなくても定期的に送信することもできます。 – jvrmed

0

@jvrmedと似ていますが、私はのデータをローカルに保存することをお勧めします()。しかし、あなたのアプリケーションがアクティブになるとき、つまりバックグラウンドになっているときに、そのデータをサーバーにプッシュすることをお勧めします。

func applicationWillResignActive(_ application: UIApplication) { } 
+0

ありがとうございますが、なぜ私はapplicationWillResignActiveを使用してデータをプッシュする必要がありますか? didFinishLaunchingWithOptionsの代わりに? – krypton36

+2

@ krypton36 'didFinishLaunching'は、ユーザーがあなたのアプリを再起動した後にのみデータをプッシュします。 'willResignActive'を使うと、ユーザーがあなたのアプリを終了するときに、' didFinishLaunching'で保存されるよりも早くデータを保存します。また、 'willResignActive'はユーザーが終了するたびに起動しますが、' didFinishLaunching'は、アプリがすでにメモリにあって再アクセスしただけでは起動しません。 –

関連する問題