一部のデータをダウンロードするためにSOAPWebサービスにアクセスするアプリケーションがあります。私の問題は、これをかなり定期的に実行する必要があることです。現在、ユーザーはデータをダウンロードするために「更新」ボタンを押していますが、ユーザーがボタンを押さなくても実行できるようにしたいと思います。
この状況で取るべき最善のアプローチは何でしょうか?
一部のデータをダウンロードするためにSOAPWebサービスにアクセスするアプリケーションがあります。私の問題は、これをかなり定期的に実行する必要があることです。現在、ユーザーはデータをダウンロードするために「更新」ボタンを押していますが、ユーザーがボタンを押さなくても実行できるようにしたいと思います。
この状況で取るべき最善のアプローチは何でしょうか?
ダウンロードがすでに設定されている限り、必要なのはを使用することだけのようですNSTimer
。たとえば、30秒ごとにダウンロードをトリガーする場合は、次の行を入力します。
[NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(doDownload:) userInfo:nil repeats:YES];
そして、あなたは次のような機能を持っているでしょう
-(void) doDownload:(NSTimer*) timer
ダウンロードが完了したら、doDownload
関数内で次のように呼び出します。
[timer invalidate];
タイマーを切る。
おそらく、私がこれをかなり定期的に実行する必要があるとはどういう意味かを明確にする必要があります。アプリケーションで更新が必要な頻度(たとえば、毎秒、毎分、毎時....)。または、定期的ではなく、利用可能な更新がある場合はサーバーによって駆動されます。
データの更新の決定がサーバー側の実装で行われると思われる場合(たとえば、何かが更新され、サーバーが今すぐクライアントを更新する必要がある場合)、Appleのプッシュ通知システムの使用を検討してください。一方、必要な更新が定期的なものである場合は、データ更新の頻度とデバイスの帯域幅/バッテリーの間の最良のトレードオフを考えて、それを実行してください。