3

アプリケーションを開発しました。私のアプリケーションはユーザーからのフィードバックを受け取ります。ネットワークが利用できない場合、そのデータはローカルデータベースに保存されます。ただし、ネットワークが利用可能になると、中央データベースと自動的に同期されます。

しかし、ここでいくつか問題があります。データベースを保存してアプリケーションをバックグラウンドに送信すると、ネットワークが利用可能になると、中央データベースとの同期を自動的に実行する必要があります。どうやってするか?

Reachabilityクラスを使用してネットワークの可用性を確認しています。

4

3 に答える 3

1

iPhoneではできません。アプリは数秒で存在しなくなります(アプリがバックグラウンドに移動すると)。

すべてのアプリで5秒、より多くのバックグラウンド時間を要求した一部のアプリで10分だと思います。

PS:ただし、アプリをナビゲーションアプリまたは音楽アプリとしてマークする場合を除きます。これらのアプリは、理論的には永久にバックグラウンドで動作し続けることができます。しかし、フィードバックアプリがそのような権限でアプリストアで承認されるかどうかは疑問です。

于 2012-07-31T19:13:47.130 に答える
1

現時点では、ネットワークが利用可能になったときにアプリを「ウェイクアップ」させる方法はありません。ユーザーがネットワーク接続なしでアプリを終了した場合、ユーザーが自発的にアプリを開くまで、何もできません。

ただし、UILocalNotificationを使用してそうするように促すことができます。アプリが終了していて、アップロードを待機しているデータがある場合は、通知を4時間(または適切な時間)で起動するようにスケジュールできます。

ユーザーが通知時間より前にアプリを開き、データをアップロードできる場合は、通知をキャンセルでき、誰も通知がスケジュールされたことを知ることはできません。

ユーザーがアプリを開かない場合は、通知が表示され、「しばらくアップロードしていないデータが携帯電話にあります。インターネットに接続し、MyAwesomeAppを起動してデータを同期してください」などのメッセージが表示されます。

于 2012-07-31T21:23:11.717 に答える
0

保存したデータベースに、サーバーへのデータのアップロードが成功したことを示す追加の列を保持します。データが書き込まれているが、まだアップロードされていないときにこれを設定します。正常にアップロードされたら、値をクリアします。アプリがフォアグラウンドになったらこの値を確認し、この列がクリアされていないデータをアプリにアップロードさせることができます。アプリの実行中に、適切な間隔でタイマーを設定して到達可能性を再確認し、成功した場合はアップロードを試みることができます。データが正常に書き込まれたときにのみフラグをクリアし、サーバーが部分的なアップロードを処理しようとしないことを確認してください(地下鉄や電車でこれを行おうとしている人が接続に出入りしていると考えてください)。

于 2012-07-31T21:08:00.273 に答える